[英]Sending datetime from AWS ec2 instance to Gmail with moment js
我應該使用moment js
從javascript
中new 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.