[英]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.