moment / moment-timezone

Timezone support for moment.js
momentjs.com/timezone
MIT License
3.82k stars 835 forks source link

parsing time zone offset with second fails #772

Open palindrom615 opened 5 years ago

palindrom615 commented 5 years ago
moment("1899-06-28T23:27:52.000+08:27:52") // invalid date!

Above code results Invalid Date because moment cannot parse timezone offset with the second part.

Though the format is not standard, it is valid Korean standard time before GMT is adopted in Korea on April 1st, 1908. (see this: https://ko.wikipedia.org/wiki/%ED%95%9C%EA%B5%AD_%ED%91%9C%EC%A4%80%EC%8B%9C) Can this case be considered? This bug affects business logic on my work.

saschanaz commented 5 years ago

The document only says it was +08:28, not +08:27:52 though...

palindrom615 commented 5 years ago

@saschanaz ,

The document only says it was +08:28, not +08:27:52 though...

Yeah, Wikipedia does not mention about the second unit of offset. The premodern time standard is quite an ambiguous problem, but implementations like java ZonedDateTime are designed with later one: 1-934-0f55c3

saschanaz commented 5 years ago

The Intl implementation in Firefox also generates +08:27:52:

> Intl.DateTimeFormat("default", { timeZone: "Asia/Seoul", timeZoneName: "long" }).format(new Date("1900-01-01T00:00:00"))
"1/1/1900, GMT+08:27:52"
Hoto-Cocoa commented 5 years ago

According Wikipedia's Time in North Korea Document, "Hanyang (Seoul) which was calculated to be UTC+08:27:52[Ref: A Bridge between Conceptual Frameworks: Sciences, Society and Technology Studies edited by Raffaele Pisano]. In 1442".

image

ichernev commented 2 years ago

Fair point, but this is a bug in moment, not moment-timezone. I'll leave it here for now.