Moment JS-如何从另一个时区获得时间



我有一个字符串,'2019年1月24日12:00 pst',其中时间设置为浏览器的时区。我如何利用瞬间将其转换为另一个时区(即 - 美国/new_york),然后在该时区中获得时间?

因此,在上面的示例中,我有" 2019年1月24日12:00 PST"的字符串,其中时区位于浏览器的时区(西雅图)。当将其转换为纽约时区时,我正在尝试获得'2019年1月24日15:00。

怎么样:

var s = "Jan 24, 2019 12:00 PST";
var d = new Date(s);
var m = moment(d).tz("America/New_York");
console.log(m.format("MMM DD Y, hh:mm z"));

这里唯一担心的是您得到该字符串的地方。据我所知,该特定的字符串在每个浏览器中都起作用。但是,日期构造函数似乎并不支持美国以外的" PST"之类的命名偏移,因此,如果您像中欧时代的CEST一样,那将不会完全奏效。在这种情况下,只需切断PST并使用Moment的字符串解析功能对其进行解析。由于您已经知道该字符串是在用户所在的同一区域中生成的,因此您无论如何都不需要它。

作为所有这些的替代方法,请避免完全需要该字符串,然后从源服务器中获得ISO的日期,或者字符串来自其他一些JavaScript,只需获取该日期对象并将其直接传递给力矩。

此评论突出显示了诸如" pst" moment.js之类的解析时区的问题 - 如何用文本时区(如'pst')解析日期字符串字符串?

如果您绝对无法以另一种格式获得字符串,则可以将最后三个字符分开,并与这样的对象进行比较:

var testDate = "Jan 24, 2019 12:00 PST";
var timezones = {
    " GMT": " +0000",
    " EDT": " -0400",
    " EST": " -0500",
    " CDT": " -0500",
    " CST": " -0600",
    " MDT": " -0600",
    " MST": " -0700",
    " PDT": " -0700",
    " PST": " -0800"
};
const fixTimezone = dateStr => {
    let zone = dateStr.slice(-4);
    let time = dateStr.slice(0, -4);
    return time + timezones[zone];
};
let fixedDate = fixTimezone(testDate);
console.log(fixedDate);
console.log(
    moment(fixedDate)
        .tz("America/New_York")
        .format("MMM DD Y, hh:mm z")
);

使用Moment timeZone。

应获得2019年1月24日,03:00 EST

https://jsfiddle.net/ethantrawick/xectfsby/12/

相关内容

  • 没有找到相关文章

最新更新