【发布时间】:2016-04-14 17:57:30
【问题描述】:
在我的 UI 上,我尝试根据特定时区显示日期。在此示例中,我将使用 Americas/New_York 作为时区。我就是这样做的。
$scope.getStartTime = function(){
var date = new Date();
return moment(date).tz("Americas/New_York").format('YYYY-MM-DD HH:mm:ss');
};
之后,我想发送这些数据并将其发送到我的服务器。但是,在我的服务器中,我希望它始终序列化为 UTC 时间,而不是纽约时区 (EST)。
例如,如果时间是下午 12:00。在纽约,那么时间将被连载到下午 4:00。在发送到后端之前的 UTC 时间。这是我的尝试:
var date = getStartTime();
....
// Display the date in the UI
....
$scope.revertStartTime(date);
$scope.revertStartTime = function(startTime) {
console.log("Start time: ", startTime);
console.log("Moment: ", moment(startTime).format());
console.log("Converted to utc time: ", moment().utc(startTime).format());
return moment.utc(startTime).format("YYYY-MM-DD'T'HH:mm:ss.SSSZ");
}
我尝试使用 moment().utc() 函数恢复开始时间,并希望日期会更改为基于 UTC 的日期,但不幸的是它一直将我的日期变成本地化日期而不是 UTC 日期,我不确定为什么。任何帮助,将不胜感激。谢谢!
编辑:
尝试遵循以下方法,这就是我所做的:
$scope.getStartTime = function(){
var date = new Date();
var startTime = new moment(date).tz($rootScope.userinfo.timeZone).format('YYYY-MM-DD HH:mm:ss');
$rootScope.offset = moment().utcOffset(startTime);
console.log("offset: ", $rootScope.offset);
return startTime;
};
$scope.revertStartTime = function(startTime) {
console.log("User Selected Time: ", moment().utcOffset(startTime).format('YYYY-MM-DD HH:mm:ss'));
return moment().utcOffset(startTime).format('YYYY-MM-DD HH:mm:ss');
}
但我得到的只是一个错误,说 revertStartTime 返回一个 Invalid Date。
【问题讨论】:
标签: javascript date datetime timezone momentjs