Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/423.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.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 将ISO日期字符串转换为日期对象而不考虑时区_Javascript_Date_Datetime_Momentjs - Fatal编程技术网

Javascript 将ISO日期字符串转换为日期对象而不考虑时区

Javascript 将ISO日期字符串转换为日期对象而不考虑时区,javascript,date,datetime,momentjs,Javascript,Date,Datetime,Momentjs,目标:将ISO日期字符串转换为日期对象而不考虑时区 我有一个ISO字符串:2017-07-23T20:30:00.00Z 我尝试使用以下方法将该字符串转换为日期: 新日期('2017-07-23T20:30:00.00Z') 所有人都给出了以下输出:2017年7月24日星期一02:00:00 GMT+0530(印度标准时间) 这是不正确的 您能告诉我如何获得字符串中的确切日期吗?试试这个 var date = new Date('2017-07-23T20:30:00.00Z'); consol

目标:将ISO日期字符串转换为日期对象而不考虑时区

我有一个ISO字符串:2017-07-23T20:30:00.00Z

我尝试使用以下方法将该字符串转换为日期:

新日期('2017-07-23T20:30:00.00Z')

所有人都给出了以下输出:2017年7月24日星期一02:00:00 GMT+0530(印度标准时间)

这是不正确的

您能告诉我如何获得字符串中的确切日期吗?

试试这个

var date = new Date('2017-07-23T20:30:00.00Z');
console.log(date.getFullYear()+'/' + (date.getMonth()+1) +
 '/'+date.getDate());

只需删除结尾的“Z”字符就可以了

执行以下操作将打印:

moment('2017-07-23T20:30:00.00').toDate();
// Sun Jul 23 2017 20:30:00 GMT+0300 (GTB Daylight Time)
而这张给我的照片:

moment('2017-07-23T20:30:00.00Z').toDate();
// Sun Jul 23 2017 23:30:00 GMT+0300 (GTB Daylight Time)
之所以会出现这种情况,是因为在格式中使用“Z”字符时,时间不会被视为UTC。它与时区说明符匹配


通过在括号中指定“Z”,您就匹配了文字Z,因此时区保留为当前默认值,即本地时区。

您应该始终指定解析格式。在这种情况下,只需去掉“Z”:

var s='2017-07-23T20:30:00.00Z';

var m=力矩(s,'YYYY-MM-DDTHH:MM:ss');//
'2017-07-23T20:30:00.00Z..子字符串(0,10)的可能重复项
获取日期。@hassaniam不是重复的。OP希望将日期视为本地日期,UTC日期将与每天本地时区偏移期间的本地日期不同。在时区+0530中,UTC术语中的“明天”将持续到当地时间上午5:30或UTC时间下午6:30。@RobG不想从其原始ISO日期字符串中提取日期吗?就连他的例子也指出了同样的道理。@Hassaniam关于你的第一条评论,建议的副本使用时区。第二,OP希望将字符串转换为日期对象,您仅使用日期部分的建议失败,因为
新日期('2017-07-23')
将(在大多数浏览器中)将字符串视为UTC(因此返回到原始版本,其中UTC日期与本地日期不匹配)。为什么希望UTC日期与本地日期匹配?
moment('2017-07-23T20:30:00.00Z').toDate();
// Sun Jul 23 2017 23:30:00 GMT+0300 (GTB Daylight Time)