30		0		1 		1,6,12		*

0		20		*		10			1-5

0		0		1,10,15	*			*

5,10	0		10		*			1




now: 25.07

{
	months: 1,6,12
	days:	1
	=
	created next timestamp: 01.12
}

{
	months: 10
	days: *
	hour: 20
	minute: 0

	created next timestamp: 01.10 20:00
}



now: 10.07 16:30

{
	months: *
	days: 1,10,15
	hour: 0
	minute: 0

	created next timestamp: 15.07 00:00
}


nextValidMonth(now = 7, input = "*") int {
	if input == "*" || now == input
		return now

	// 5 - 8 => 7
	// 5 - 6 => 5
}


// expected: 2015.07.01 17:00
nextValidTimestamp(now = 2014.07.31 18:30, input = "0	17	* 	7") {
	created := "0000.00.00 00:00"

	created.Month := nextValidMonth(07, "7") // -> 7
	created.Day := nextValidDay(25, "1") // -> 31
	created.Hour := nextValidHour(18, "17") // -> 17

	// 2014.07.31 17:00
	if created < now {
		created.Day = nextValidDay(31 + 1, "*") // -> 1
		// 2014.07.01 17:00
		if created < now {
			created.Month = nextValidMonth(7 + 1, "7") // -> 7
			// 2014.07.01 17:00
			if created < now {
				created.Year++
				// 2015.07.01 17:00
			} 
		}
	}
}

created next timestamp - now() => duration until next event
