Javascript 将ISO日期字符串转换为日期对象而不考虑时区
目标:将ISO日期字符串转换为日期对象而不考虑时区 我有一个ISO字符串:2017-07-23T20:30:00.00Z 我尝试使用以下方法将该字符串转换为日期: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
新日期('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)