public CronDefinition(String definition) throws IllegalArgumentException {
		// Überflüssige Leerzeichen entfernen
		definition = definition.replaceAll("\\s*,\\s*", ",");
		definition = definition.replaceAll("\\s*/\\s*", "/");
		definition = definition.replaceAll("\\s*-\\s*", "-");

		// In 5 Teile Auftrennen
		_segments = definition.trim().split("\\s+");
		if(_segments.length != 5) {
			throw new IllegalArgumentException("Cron-String benötigt 5 Angaben");
		}

		// Einzelne Bestandteile parsen und Bitsets füllen
		IntParser intParser = new IntParser();
		try {
			intParser.parseField(_minutes, 0, 59, _segments[0]);
		}
		catch(IllegalArgumentException e) {
			throw new IllegalArgumentException("Ungültige Minuten-Angabe: '" + _segments[0] + "'", e);
		}
		try {
			intParser.parseField(_hours, 0, 23, _segments[1]);
		}
		catch(IllegalArgumentException e) {
			throw new IllegalArgumentException("Ungültige Stunden-Angabe: '" + _segments[1] + "'", e);
		}
		try {
			new DoMParser().parseField(_days, 0, 30, _segments[2]);
		}
		catch(IllegalArgumentException e) {
			throw new IllegalArgumentException("Ungültige Tages-Angabe: '" + _segments[2] + "'", e);
		}
		try {
			new MonthParser().parseField(_months, 0, 11, _segments[3]);
		}
		catch(IllegalArgumentException e) {
			throw new IllegalArgumentException("Ungültige Monats-Angabe: '" + _segments[3] + "'", e);
		}
		try {
			new DoWParser().parseField(_dayOfWeek, 0, 7, _segments[4]);
		}
		catch(IllegalArgumentException e) {
			throw new IllegalArgumentException("Ungültige Wochentags-Angabe: '" + _segments[4] + "'", e);
		}

		if(nextScheduledTime(0) == -1){
			// ungültige Definition
			throw new IllegalArgumentException("Ungültige Cron-Definition, Datum wird nie gültig");
		}
	}