我的日期格式为dd.MM.yyyy HH:mm:ss
,我需要将其转换为ISO格式,但它无法正常工作。
这是我的代码:
let date = '12.01.2016 0:00:00'; //12 January 2016
let parsedDate = moment(date, 'dd.MM.yyyy HH:mm:ss')
console.log(parsedDate.toISOString()); //result is 2016-12-31T23:00:00.000Z
例2:
let date = '12.01.2016 0:00:00'; //12 January 2016
let parsedDate = new Date(date)
console.log(parsedDate.toISOString()); //result is 2016-11-30T23:00:00.000Z
问题出在哪里?为什么我会得到不同的结果?
答案 0 :(得分:2)
您的format parameter错误,请改用'DD.MM.YYYY H:mm:ss'
。
没有小写dd
,每月使用大写DD
,而年份使用大写YYYY
而不是小写yyyy
。
请注意toISOString()
:
请注意
.toISOString()
始终以UTC格式返回时间戳,即使有问题的时刻处于本地模式。这样做是为了提供与原始JavaScript日期toISOString()
的规范的一致性,如the ES2015 specification中所述。
let date = '12.01.2016 0:00:00'; //12 January 2016
let parsedDate = moment(date, 'DD.MM.YYYY H:mm:ss')
console.log(parsedDate.toISOString());
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.19.1/moment.min.js"></script>
答案 1 :(得分:0)
在第二个示例中,解析日期的结果是2016年12月1日0:00:00(GMT + 1)
当您输出到ISOString()时,它会为您提供GMT时间,即提前1小时,因此2016年11月30日23:00:00
答案 2 :(得分:0)
查看此链接https://www.w3schools.com/js/js_date_formats.asp,段落&#39; ISO日期&#39;
在日期时间字符串中省略T或Z可以在不同的浏览器中给出不同的结果。
答案 3 :(得分:0)
我只是尝试使用moment.js,你似乎使用了一个掩码,就像你在C#中使用的那样。 Moment.js在日期部分使用大写字母。
let date = '12.01.2016 0:00:00'; //12 January 2016
let parsedDate = moment(date, 'DD.MM.YYYY HH:mm:ss');
console.log(parsedDate.toISOString()); //result is 2016-01-11T23:00:00.000Z
Date.parse()
功能需要另一种输入。