【发布时间】:2017-12-02 11:59:24
【问题描述】:
let isoDate = '2018-01-01T18:00:00Z';
我只需要使用任何方法事件时刻提取 18:00。
【问题讨论】:
-
从哪里获取日期?
标签: javascript
let isoDate = '2018-01-01T18:00:00Z';
我只需要使用任何方法事件时刻提取 18:00。
【问题讨论】:
标签: javascript
您可以使用正则表达式来匹配该特定区域。
let isoDate = '2018-01-01T18:00:00Z';
let result = isoDate.match(/\d\d:\d\d/);
console.log(result[0]);
【讨论】:
Vanilla Javascript 实现。
const dateObj = new Date('2018-01-01T18:00:00Z');
let hour = dateObj.getUTCHours();
let minute = dateObj.getUTCMinutes();
console.log(hour, minute);
这利用了Date 内置的Javascript 对象。如果您不想为此单独添加外部库,则应该检查一下。
参考:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date
【讨论】:
`${hour}:${minute}`
你可以使用momentjs来做到这一点。
默认情况下,moment 以本地时间解析和显示。 如果要解析或显示UTC的时刻,可以使用moment.utc()代替moment()
var t = moment.utc("2018-01-01T18:00:00Z").format("HH:mm")
console.log(t)
<script src="https://cdn.jsdelivr.net/npm/moment@2.19.3/moment.min.js"></script>
【讨论】:
这是一个简单的JavaScript 的快速单行解决方案:
console.log("2018-01-01T18:00:00Z".replace(/^[^:]*([0-2]\d:[0-5]\d).*$/, "$1"));
如果您获得的日期是Date 的实例而不是字符串,那么您可以使用toISOString 轻松转换它,如下所示:
let date = new Date('2018-01-01T18:00:00Z');
console.log(date.toISOString().replace(/^[^:]*([0-2]\d:[0-5]\d).*$/, "$1"));
【讨论】:
\d\d:\d\d 来匹配时间。
\d\d:\d\d 可以接受像 99:99 这样的输入,即使 toISOString 不会产生这样的输入,所以我选择了更严格的方法。
我收到如下日期并抓住时间这对我有用
let isoDate= '2020-09-28T15:27:15+05:30';
let result = isoDate.match(/\d\d:\d\d/);
console.log(result[0]);
输出将只是来自 isoDate 的时间,即,
15:27
【讨论】:
您可以使用正则表达式组:
const ISODateFormat = '2021-07-19T13:04:20.602Z';
const regex = /([0-9]{4}-[0-9]{2}-[0-9]{2})?.([:0-9]+)/;
console.log(ISODateFormat.match(regex));
// expected output: Array ["2021-07-19T13:04:20", "2021-07-19","13:04:20"]
【讨论】: