带有字符串值的 Safari 新日期输出不同的时间



我正在尝试做的是将"yyyy-mm-dd HH:mm:ss"字符串更改为日期值。

这是当前代码

var c = new Date('2019-01-19 23:59:59'.replace(/s+/g, 'T'))

它返回

  • 铬 : Sat Jan 19 2019 23:59:59 GMT+0900 (KST)
  • 野生动物园 : Sun Jan 20 2019 08:59:59 GMT+0900 (KST)
  • IE11 : Sat Jan 19 2019 23:59:59 GMT+0900 (KST)

我应该怎么做才能让它都返回相同的日期?

谢谢。

Safari...创建具有日期字符串的实例时,它不考虑时区偏移量。

末尾添加Z也是很好的观点,但是如果您想获得与其他浏览器相同的结果,则应计算时区偏移量。

这是我所做的...

// Before do this, check navigator.userAgent 
// and execute below logic if it is desktop Safari.
// Add Z is the convention, but you won't get any error even if do not add.
var c = new Date('2019-01-19 23:59:59Z'.replace(/s+/g, 'T')) 
// It will returns in minute
var timeOffset = new Date().getTimezoneOffset();
// Do not forget getTime, if not, you will get Invalid date         
var d = new Date(c.getTime() + (timeOffset*60*1000))    

将打开这篇文章直到明天等待更好的答案。谢谢。

将 '

Z ' 添加到GMT/UTC时区的date字符串中

var c = new Date('2019-01-19 23:59:59'.replace(/s+/g, 'T')+'Z');

ISO 日期可以加上小时、分钟和秒 (YYYY-MM-DDTHH:MM:SSZ):日期和时间用大写字母 T 分隔。

UTC 时间用大写字母 Z 定义。

如果要修改相对于 UTC 的时间,请删除 Z 并改为添加 +HH:MM 或 -HH:MM:

例如var d = 新日期("2019-01-19T23:59:59-09:00");

最新更新