从日期字符串中获取时间戳,不区分时区和时区名称

时间:2020-02-20 19:14:03

标签: javascript timezone

我有一个来自外部API的dateTime字符串,这种格式(很糟糕,我知道):

const startDate = '2/13/2020 15:00';

和时区名称:

const timezoneName = 'America/New_York';

这表示2/13/2020 15:00中的dateTime为New York

有什么好办法可以获取时间戳(或JavaScript日期对象)吗?

如果有帮助,我不介意使用moment.js或/和moment-timezone

2 个答案:

答案 0 :(得分:1)

使用时刻-时区应该可以工作:

const moment = require('moment-timezone');
const t = moment.tz("2/13/2020 15:00", "MM/DD/YYYY HH:mm","America/New_York");
console.log(t.toISOString()); // Prints '2020-02-13T20:00:00.000Z'

答案 1 :(得分:1)

Moment和Moment-Timezone用于旧代码。

对于新应用,Moment团队建议使用Luxon

const startDate = '2/13/2020 15:00';
const timezoneName = 'America/New_York';

const dateTime = luxon.DateTime.fromFormat(startDate, 'M/d/yyyy HH:mm',
                                           { zone: timezoneName });
const utcDateTime = dateTime.toUTC();
const s = utcDateTime.toISO();

console.log(s); //=> "2020-02-13T20:00:00.000Z"
相关问题