簡體   English   中英

使用moment js將日期時間從AWS ec2實例發送到Gmail

[英]Sending datetime from AWS ec2 instance to Gmail with moment js

我應該使用moment jsjavascriptnew Date()當前datetime獲取time ,並將其轉換為local time

var time = moment.utc(new Date()).local().format('HH:mm');
console.log(time);

並將time發送給gmail

如果我是從本地服務器發送的,則時間會根據需要顯示在電子郵件中。 但是,如果我從遠程服務器(aws實例)發送時間,它將以gmail顯示utc時間。

樣品:

new Date() = 2018-04-24T08:20:54.622Z

time in email from localserver = 16:20 (+8 in my country), correct for me.

time in email from aws ec2 instance = 08:20, I don't want it.

有人對此有想法嗎? 謝謝。

這是節點嗎? 如果是這樣,則將AWS服務器設置為本地時間為UTC。 這些在AWS上應該是相同的,而在本地則應該不同:

var utctime = moment.utc().format('HH:mm');
console.log(utctime);
var localtime = moment.utc().local().format('HH:mm');
console.log(localtime);

如果此操作在您的瀏覽器中運行,並且您針對本地服務器和AWS服務器獲得不同的行為,則說明發生了非常奇怪的事情,因為您的計算機和瀏覽器應用於本地時間。

如果我正確理解了您的問題,則可以使用moment-timezone解決此問題。 您可以對本地時區進行硬編碼,以便它將始終將日期轉換為該特定時區。

例:

moment(date).tz('Asia/Tokyo').format(format)

而不是Asia/Tokyo放您當地的時區。

如果您不知道本地時區,請使用moment-timezone庫的guess() API:

var zoneName = moment.tz.guess(); // just to get your local time zone name. Don't keep it in code otherwise it will pick local time zone of AWS instance

以下是工作代碼段:

 var zoneName = moment.tz.guess(); console.log(zoneName); var time = moment('2018-04-24T08:20:54.622Z').tz(zoneName).format('HH:mm'); console.log(time); 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.11/moment-timezone-with-data.js"></script> 

暫無
暫無

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

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