我目前在中部时间,是2月6日下午7:19
我的代码中有这行Javascript:
var d = new Date();
var theMonth = d.getMonth() + 1;
var theDay = d.getDate();
var theYear = d.getFullYear();
var formattedStartDate = theYear + "-" + theMonth + "-" + theDay;
console.log(formattedStartDate);
问题是,这实际上是打印
2018-2-7
我正在通过美国东部端点的AWS Lambda运行托管此代码,因此我无法理解为什么它会完全使用错误的日期。可能是什么问题?
答案 0 :(得分:0)
Moment.js可以为您处理。 https://momentjs.com/
moment(d).utcOffset('-0600')
会将时区设置为中心。下面的代码最后有两个console.log语句。第一个在设置时区之前打印日期/时间,第二个在设置时区之后打印日期/时间以显示它有效。我在日期对象中加入了时间,因此您可以看到在一天中的任何时间应用了正确的时区。
作为额外的奖励,moment.js还将简化日期格式。
'use strict';
var moment = require('moment');
exports.handler = (event, context, callback) => {
var d = new Date();
var theMonth = d.getMonth() + 1;
var theDay = d.getDate();
var theYear = d.getFullYear();
var formattedStartDate = theYear + "-" + theMonth + "-" + theDay;
console.log(formattedStartDate);
console.log(d); //prints current datetime before applying timezone
d = moment(d).utcOffset('-0600').format('YYYY-MM-DD HH:mm'); //applies Central timezone
console.log(d); //prints updated timezone
};

答案 1 :(得分:0)
AWS Lambda将其本地时间设置为UTC,因此getDate()
和getUTCDate()
会产生相同的结果。