如何从 ISO 格式的日期中获取时间
how to get only time from date in ISO formate
如何从 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
由于您的服务器 returns 一个具有预定义格式的 ISO-8601 格式日期,您可以使用 toISOString()
将其转换为 ISO 字符串,然后获取时间值的子字符串:
var d = new Date('1970-01-15T03:32:12.000Z');
console.log(d.toISOString().substr(11,8));
Date.getTime()
returns 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
工作时,不要忘记考虑时区
的时间,尤其是当您的应用程序在不同地区运行时。
您必须使用 Date.prototype
方法手动构建时间字符串:getHours, getMinutes and getSeconds
或者使用 moment.js 库。
Date.getTime()
给你 unix 时间戳,这是自 1970 年 1 月 1 日以来的秒数;
The getTime() method returns the numeric value corresponding to the time for the specified date according to universal time.
来自 MDN
您需要自己格式化日期,方法是连接 Date.getHours()
、Date.getMinutes()
和 Date.getSeconds()
方法的输出,或者使用预定义的格式化函数之一,例如Date.toTimeString()
。查看 docs 选择您的选择。
您可以使用 getHours()
、getMinutes()
和 getSecondes()
。然后你可以将它与字符串或对象一起使用。
尝试以下操作:
d.toTimeString().split(' ')[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>
如何从 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
由于您的服务器 returns 一个具有预定义格式的 ISO-8601 格式日期,您可以使用 toISOString()
将其转换为 ISO 字符串,然后获取时间值的子字符串:
var d = new Date('1970-01-15T03:32:12.000Z');
console.log(d.toISOString().substr(11,8));
Date.getTime()
returns 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
工作时,不要忘记考虑时区
的时间,尤其是当您的应用程序在不同地区运行时。
您必须使用 Date.prototype
方法手动构建时间字符串:getHours, getMinutes and getSeconds
或者使用 moment.js 库。
Date.getTime()
给你 unix 时间戳,这是自 1970 年 1 月 1 日以来的秒数;
The getTime() method returns the numeric value corresponding to the time for the specified date according to universal time.
来自 MDN
您需要自己格式化日期,方法是连接 Date.getHours()
、Date.getMinutes()
和 Date.getSeconds()
方法的输出,或者使用预定义的格式化函数之一,例如Date.toTimeString()
。查看 docs 选择您的选择。
您可以使用 getHours()
、getMinutes()
和 getSecondes()
。然后你可以将它与字符串或对象一起使用。
尝试以下操作:
d.toTimeString().split(' ')[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>