如何在ISO格式中仅获取日期之后的时间

时间:2018-08-17 07:46:12

标签: javascript iso

如何仅从ISO格式的日期中提取时间? 我尝试过:

var d = new Date('1970-01-15T03:32:12.000Z'); //ISO-8601 formatted date returned from server
console.log(d.getTime());// 1222332000

期望的操作是:03:32:12

7 个答案:

答案 0 :(得分:4)

由于服务器返回的是具有预定义格式的ISO-8601格式的日期,因此您可以使用toISOString()将其转换为ISO字符串,然后获取时间值的子字符串:

var d = new Date('1970-01-15T03:32:12.000Z'); 
console.log(d.toISOString().substr(11,8));

答案 1 :(得分:0)

Date.getTime()以UNIX纪元格式返回时间。 https://en.wikipedia.org/wiki/Unix_time

要仅访问您感兴趣的参数,可以使用Date.getMinutes()Date.getMinutes()等。请参阅MDN上的文档:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date

注意:使用Date时,不要忘了在时区上花点时间 的时间,尤其是当您的应用在不同地区运行时。

答案 2 :(得分:0)

您必须使用Date.prototype方法手动构建时间字符串:getHoursgetMinutesgetSeconds

或使用moment.js库。

答案 3 :(得分:0)

Date.getTime()提供了unix时间戳,它是自1970年1月1日以来的秒数;

  

getTime()方法根据世界标准时间返回与指定日期的时间对应的数值。

来自MDN

您需要自己格式化日期,方法是将Date.getHours()Date.getMinutes()Date.getSeconds()方法的输出并置,或者使用一种预定义的格式化功能,例如{{ 1}}。检出docs以选择您的选择。

答案 4 :(得分:0)

您可以使用getHours()getMinutes()getSecondes()。然后,您可以将其与字符串或对象一起使用。

答案 5 :(得分:0)

请尝试以下操作:

d.toTimeString().split(' ')[0]

答案 6 :(得分:0)

您可以使用moment.js解析所需的任何格式。

如果您认为moment.js太大,则还有一个库调用dayjs。相同的时尚API,但只有2KB。 (很遗憾,您还不能使用dayjs进行UTC时间。

更新:感谢kun通知更新。从v1.8.9开始,您现在可以将UTC与dayjs插件一起使用。

var d = new Date('1970-01-15T03:32:12.000Z');
console.log(moment(d).utc().format('HH:mm:ss'));
dayjs.extend(dayjs_plugin_utc)
console.log(dayjs(d).utc().format('HH:mm:ss'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/dayjs/1.8.9/dayjs.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/dayjs/1.8.9/plugin/utc.js"></script>