Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/436.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 带字符串值的Safari新日期与其他时间_Javascript_Date_Cross Browser - Fatal编程技术网

Javascript 带字符串值的Safari新日期与其他时间

Javascript 带字符串值的Safari新日期与其他时间,javascript,date,cross-browser,Javascript,Date,Cross Browser,我试图做的是将“yyyy-mm-dd HH:mm:ss”字符串更改为日期值 这是当前的代码 var c = new Date('2019-01-19 23:59:59'.replace(/\s+/g, 'T')) 它回来了 chrome:2019年1月19日星期六23:59:59 GMT+0900(KST) 狩猎:2019年1月20日星期日08:59:59 GMT+0900(KST) ie11:2019年1月19日星期六23:59:59 GMT+0900(KST) 我应该怎么做才能让它在相

我试图做的是将“yyyy-mm-dd HH:mm:ss”字符串更改为日期值

这是当前的代码

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

  • chrome:
    2019年1月19日星期六23:59:59 GMT+0900(KST)
  • 狩猎:2019年1月20日星期日08:59:59 GMT+0900(KST)
  • ie11:
    2019年1月19日星期六23:59:59 GMT+0900(KST)
我应该怎么做才能让它在相同的日期返回


谢谢。

GMT/UTC
时区的
date
字符串添加“
Z

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”)

狩猎。。。在创建具有日期字符串的实例时,它不考虑时区偏移。 在末尾添加
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))    
将打开此帖子到明天,等待更好的答案。
谢谢。

我需要客户端的解决方案。我将使用此数据实现倒计时UI。非标准字符串的解析依赖于实现。修复方法是不使用内置解析器。这是惯例,但Safari不会返回与其他解析器相同的值。我找到了计算和添加回复的方法。感谢您,虽然这会根据当前时区偏移量调整日期,但它应该使用当前时区偏移量作为日期。不要“检查navigator.userAgent”并推断行为,这是非常糟糕的做法。您可以在两行中将OP格式解析为本地格式,这比上面的代码少一行,并且不会与偏移量混淆。顺便说一句,可以使用解构在一行中解析OP格式。有趣但不推荐:
新日期(…('2019-01-19 23:59:59'.拆分(/\D/).map((x,i)=>i==1?x-1:x))
:-)@在我看来,你的回答比我的更容易接受。你写的代码是这样表述的:新日期('2019','0','19','23','59','59'),我猜。(wondeful bb)。但是我想知道你为什么不推荐这种方式。我还想知道
OP
的含义。谢谢你的解决方案!“OP”是“原创帖子”或“原创海报”。我不推荐它,因为它不是特别容易维护或理解的。一个简单的解构任务只需多出一行,而且更清晰。感谢您的快速响应和良好的回答!