我目前处于中央时间,在2018年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运行此代码,因此我看不出为什么它会完全使用错误的日期。有什么问题?
moment.js可以为您处理此操作。https://momentjs.com/
moment(d).utcOffset('-0600')
将将时区设置为中央。下面的代码在末尾具有两个控制台。第一个打印在设置时区之前打印日期/时间,第二个打印在设置TimeZone后的日期/时间以显示其有效的日期/时间。我在日期对象上包含了时间,因此您可以看到在一天中的任何时候都应用了正确的时区。
作为额外的奖励,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
};
aws lambda将其本地时间设置为UTC,因此getDate()
和getUTCDate()
将具有相同的结果。