Safari和WebView上的toLocaleTimeString转换为错误的时间

问题描述 投票:0回答:1

我正在开发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 ios angular safari
1个回答
0
投票

[您会惊讶javascript中的日期有多少个问题(:使用一些库来约会将使您的生活更轻松。The date libraries overview article。 Momentjs是一个古老的大怪兽。轻量级的Luxon或DayJs通常就足够了。


0
投票

我也曾在iOS的WebView中与之抗争。我使用了矩型库来处理日期转换,并且可以在Android / iOS上正确处理日期转换。

我建议将moment.js导入并使用到项目中,如果要在WebView iOS中呈现日期,则可以使用它来处理日期。

© www.soinside.com 2019 - 2024. All rights reserved.