JavaScript getDate()函数在lambda函数中提前一天返回



我目前处于中央时间,在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()将具有相同的结果。

相关内容

  • 没有找到相关文章

最新更新