[英]Why is my function not running properly in my local host but works perfectly fine in an online web editor?
[英]Date miscalculation on aws EBS server. It's running perfectly fine on local
部署在aws server上總是會出現誤算。
語境:
mongoDB 中存儲的所有日期都是 UTC 格式。 在將日期導出到 excel 之前,我想將日期轉換為 IST。
我的代碼在我的本地機器上工作得很好,但是當部署在服務器上時,它失敗了。
這是一個有助於理解問題的示例。
const myDate = new Date('2022-12-21T18:41:18.384+00:00');
// The value of convertedDate should be 2022/12/21
// But, it for some reason returns - 2022/12/22
const convertedDate = myDate.toLocaleDateString('en-GB');
我還嘗試使用外部庫date-fns
來處理這個問題。 以下是示例代碼:
const zonedDate = utcToZonedTime(myDate, 'Asia/Kolkata');
// this is also - 2022/12/22
const convertedDate = formatInTimeZone(zonedDate, 'Asia/Kolkata', 'yyyy-MM-dd');
);
我嘗試過的date-fns
的另一個變體是:
const zonedDate = utcToZonedTime(
new Date(myDate.valueOf() + myDate.getTimezoneOffset() * 60 * 1000),
'Asia/Kolkata',
);
// this is also - 2022/12/22
const convertedDate = formatInTimeZone(zonedDate, 'Asia/Kolkata', 'yyyy-MM-dd');
請注意,在本地,一切正常。
我還嘗試使用外部庫
date-fns
來處理這個問題。
看來您來回轉換,甚至轉換了兩次(時區偏移量加倍?)。 您根本不需要使用utcToZonedTime
。 只需將您原來的myDate
時間戳傳遞到formatInTimeZone
:
const convertedDate = formatInTimeZone(myDate, 'Asia/Kolkata', 'yyyy-MM-dd');
在本地,一切正常
將您的系統時區更改為服務器的時區(很可能是 UTC),您應該能夠重現該問題。 對於 node.js,使用TZ
環境變量啟動它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.