使用时刻js将日期时间从AWS ec2实例发送到Gmail

时间:2018-04-24 08:26:05

标签: javascript amazon-ec2 momentjs

我应该使用timedatetime new Date()获取当前javascript moment js的{​​{1}}并将其转换为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.

有人对此有所了解吗?谢谢。

2 个答案:

答案 0 :(得分:0)

这是节点吗?如果是这样,则设置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服务器上遇到不同的行为,则会发生一些非常奇怪的事情,因为您的计算机和浏览器应该用于本地时间。

答案 1 :(得分:0)

如果我正确理解您的问题,您可以使用moment-timezone解决此问题。您可以对本地时区进行硬编码,以便始终将日期转换为特定时区。

示例:

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

而不是Asia/Tokyo放置您当地的时区。

如果您不知道当地时区,请使用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>

相关问题