Yes sorry -1 is a valid year. An invalid month is any integer outside of [1,12]. We can always define month 13 as January if we adopt Z_12, but I expected an error to occur. Accepting months outside of [1,12] violates the Principle of least astonishment.
For comparison, python verifies the month integer: ----> 1 datetime.date(2000, 13, 1) ValueError: month must be in 1..12 So does golang accept these values because: - a sensible definition exists for values outside of [1,12]? - for performance reasons? Taras On Wednesday, 24 October 2018 01:23:35 UTC+11, Volker Dobler wrote: > > Why is year -1 invalid and what is an "invalid" month > given that 13==1 in Z_12? > > V. > > > > On Tuesday, 23 October 2018 16:01:00 UTC+2, Taras D wrote: >> >> Hi, >> >> I was surprised to find the following worked without any reported errors: >> >> t1 := time.Date(-1, 1, 10, 23, 0, 0, 0, time.UTC) // invalid year >> t2 := time.Date(2000, 13, 10, 23, 0, 0, 0, time.UTC) // invalid month >> m := time.Month(13) // invalid month >> >> What is the rationale in accepting invalid month/year values? >> > -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
