我正在开发Angular Web应用程序。
用户可以通过指定区域设置来更改日期和时间的显示方式。
[这在Firefox,Chrome,Android WebView中正常工作,但是在Safari和iOS WebView中却得到了奇怪的结果。
let dateTime = new Date(0,0,0,hours,minutes);
console.log(dateTime); // Shows: Sun Dec 31 1899 10:16:00 GMT+0200 ( EET )
console.log(dateTime.toLocaleTimeString('en-US', { hour: 'numeric', minute: 'numeric'}))); // Shows: 9:40 AM
为什么为什么在36分钟之前错了?我该如何解决。还有其他方法可以使用区域设置将Date
类型转换为时间字符串吗?
[Intl.DateTimeFormat('en-US', { hour: 'numeric', minute: 'numeric'}).format(dateTime)
结果完全相同。
[您会惊讶javascript中的日期有多少个问题(:使用一些库来约会将使您的生活更轻松。The date libraries overview article。 Momentjs是一个古老的大怪兽。轻量级的Luxon或DayJs通常就足够了。
我也曾在iOS的WebView中与之抗争。我使用了矩型库来处理日期转换,并且可以在Android / iOS上正确处理日期转换。
我建议将moment.js导入并使用到项目中,如果要在WebView iOS中呈现日期,则可以使用它来处理日期。