簡體   English   中英

將 unix 時間戳轉換為特定時區

[英]Convert unix timestamp to specific timezone

我在 unix 中有一個時間戳,如下所示,位於+2:00時區,但我想使用dayjs獲得相同的日期,但在+0:00時區,

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”?

謝謝你的幫助!

您必須包含幾個擴展庫,以便 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-節點

你試過這個插件嗎?

dayjs().utc().format()

是一個小沙盒。

雖然它不會顯示 +0:00 時間戳,因為它以不同的 ISO 標准呈現。 這對你有用嗎?

import dayjs from 'dayjs'
import customParseFormat from 'dayjs/plugin/customParseFormat.js'
import utc from 'dayjs/plugin/utc.js'
import timezone from 'dayjs/plugin/timezone.js'
dayjs.extend(customParseFormat)
dayjs.extend(utc)
dayjs.extend(timezone)

const datetime = dayjs.unix(1653134400)

console.log(datetime.tz('UTC').format('YYYY-MM-DD HH:mm:ss Z')) // 2022-05-21 12:00:00 +00:00
console.log(
    datetime.tz('America/Los_Angeles').format('YYYY-MM-DD HH:mm:ss Z') // 2022-05-21 05:00:00 -07:00
)
console.log(datetime.tz('Asia/Shanghai').format('YYYY-MM-DD HH:mm:ss Z')) // 2022-05-21 20:00:00 +08:00

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM