将datetime转换为ISO格式

时间:2017-10-25 11:37:42

标签: javascript datetime momentjs datetime-parsing

我的日期格式为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

问题出在哪里?为什么我会得到不同的结果?

4 个答案:

答案 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()功能需要另一种输入。