【问题标题】:Convert unix timestamp to specific timezone将 unix 时间戳转换为特定时区
【发布时间】:2021-12-18 22:29:19
【问题描述】:

我在 unix 中有一个时间戳,如下所示,它位于 +2:00 时区,但我想获得相同的日期,但使用 +0:00 时区,使用 dayjs

console.log("TIMESTAMP: ", dayjs.unix(timestamp).format());
>  TIMESTAMP:  2021-05-20T13:46:07+02:00

console.log("FIXED TIMESTAMP: ", dayjs.unix(timestamp).tz("Europe/London").format());
>  FIXED TIMESTAMP:  2021-05-20T12:46:07+01:00

上面我尝试使用tz("Europe/London") 执行此操作,但是,我不知道为什么,我的日期在“+01:00”时区...,为什么这个函数不返回我转换为的新时间戳“+0:00”?

感谢您的帮助!

【问题讨论】:

  • "+2:00" 是一个偏移量。 “时区”的概念通常包括一个地方(例如“欧洲/伦敦”)或地理区域(例如“中欧时间”)的偏移和夏令时的历史变化。许多偏移量映射到多个时区。虽然“欧洲/伦敦”在一年中的某些时候偏移了 +0,但在上个世纪,它还在一年中的其余时间断断续续地使用 DST (+1),并且在短时间内有“双 DST”(即+2) 全年无休。
  • 哦,2021 年 5 月 20 日,伦敦实行夏令时,因此 +1。使用位置来获得特定的偏移量是令人担忧的,因为地点会不时改变它们的偏移量,而不仅仅是因为 DST。如果您想要 +0,则使用“UTC”作为位置/时区。

标签: javascript typescript datetime unix


【解决方案1】:

你试过this插件吗?

dayjs().utc().format()

Here 是一个小沙盒。

虽然它不会显示 +0:00 时间戳,因为它以不同的 ISO 标准呈现。这对你有用吗?

【讨论】:

    【解决方案2】:

    您必须为 UTC 和时区格式包含几个扩展库才能在 dayjs 中工作。 UTC 和时区 Javascript 文件都是必需的。我使用的是 1.10.7 版本,因为它们是最新的。

    如果您在浏览器中工作,请包括以下来源。 HTML:

    <script src="https://unpkg.com/dayjs@1.10.7/dayjs.min.js"></script>
    <script src="https://unpkg.com/dayjs@1.10.7/plugin/utc.js"></script>
    <script src="https://unpkg.com/dayjs@1.10.7/plugin/timezone.js"></script>
    

    JavaScript:

    dayjs.extend(window.dayjs_plugin_utc);
    dayjs.extend(window.dayjs_plugin_timezone);
    
    let printFormat = 'hh:mm:ssA';
    let nowLocal = dayjs().utc().local().format(printFormat);
    console.log(nowLocal);
    console.log(dayjs().tz("America/New_York").format(printFormat));
    console.log(dayjs().tz("Asia/Tokyo").format(printFormat));
    

    请注意,'tz'(时区)对象不会挂起 unix() 函数,它直接附加到顶级 dayjs 对象。上面的示例采用本地时间,并以 hh:mm:ssAM|PM 格式在三个不同的时区打印。 unix 函数接受一个 Unix 时间戳并返回一个 DayJS 对象。

    这是一个运行上述示例的 JSFiddle: https://jsfiddle.net/e4x507p3/2/

    注意,如果您在浏览器中使用扩展,这应该可以工作,如果您在 NodeJS 中工作,则需要不同的方法: https://day.js.org/docs/en/plugin/loading-into-nodejs

    【讨论】:

      猜你喜欢
      • 2012-06-10
      • 2013-05-20
      • 1970-01-01
      • 2017-04-25
      • 2015-10-07
      • 2013-04-07
      • 1970-01-01
      • 2023-03-18
      • 2015-03-03
      相关资源
      最近更新 更多