使用 date-functions.js 库解析成 UTC/GMT 时间

Parsing into UTC/GMT time with date-functions.js library

使用 date-functions.js 库(例如在 datetimepicker jQuery 插件中使用):

Date.parseDate('2018-03-10 12:12', 'Y-m-d H:i')

给出:

Sat Mar 10 2018 12:12:00 GMT+0100 (Paris, Madrid)

如何获取结果作为 Unix 时间戳或 GMT/UTC 时间?

然后使用 MomentJS instead. You can specify exactly what format the string you're parsing is in. MomentJS 可以为您提供底层 Date 对象、unix 时间戳以及转换为 UTC。

var d = moment('2018-03-10 12:12', 'YYYY-MM-DD HH:mm');
console.log(d.toDate());
console.log(d.unix());
console.log(d.utc().toDate());
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.21.0/moment.min.js"></script>

您当然也可以将日期解析为 UTC,而不是将其视为当地时间。

moment.utc('2018-03-10 12:12', 'YYYY-MM-DD HH:mm');

注意 我在英国测试 UTC 有点困难,而 GMT 和 UTC 是 几乎相同。

var date = new Date('2018-03-10 12:12'.replace(' ', 'T'));

// Unix
console.log(Math.floor(date.getTime() / 1000));
    
// UTC
console.log(date.toUTCString());

一如既往,请查看 MDN 上的文档:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date

像“2018-03-10 12:12”这样的字符串通常会被解析为本地字符串,因为没有时区偏移。它也不符合 ISO 8601,因此使用 built-in 解析器将在不同的浏览器中产生不同的结果。

虽然您可以使用库,但将其解析为 UTC 并获取时间值只需 2 行代码:

function toUTCTimeValue(s) {
  var b = s.split(/\D/);
  return Date.UTC(b[0],b[1]-1,b[2],b[3],b[4]);
}

// As time value
console.log(toUTCTimeValue('2018-03-10 12:12'));

// Convert to Date object and print as timestamp
console.log(new Date(toUTCTimeValue('2018-03-10 12:12')).toISOString());