【发布时间】:2016-11-03 15:10:17
【问题描述】:
我正在使用时刻时区,因此我可以从选定的时区转换为客户端的时区。
我无法以比这更好的方式实现它:
convertSelectedTimeZoneToClients() {
let timeZoneInfo = {
usersTimeZone: this.$rootScope.mtz.tz.guess(),
utcOffset: this.formData.timeZone.offset,
selectedDateTime: this.toJSONLocal(this.formData.sessionDate) + " " + this.formData.sessionTime
};
let utcTime = this.$rootScope.mtz.utc(timeZoneInfo.selectedDateTime).utcOffset(timeZoneInfo.utcOffset).format("YYYY-MM-DD HH:mm");
let convertedTime = this.$rootScope.mtz.tz(utcTime, timeZoneInfo.usersTimeZone).format("Z");
return convertedTime;
}
所以基本上我使用usersTimeZone: this.$rootScope.mtz.tz.guess(),guess() 函数从浏览器中找出时区。
然后我从日期时间选择器和下拉列表中获取值,并使用 utcOffset 将它们转换为 UTC 值。
最后,我想将该 utc 值转换为用户时区值。
我得到这样的对象:
_d 表示转换后的正确值。我尝试在 convertTime 变量上添加一堆不同的 .format() 模式,但我无法以这种格式检索时间:“YYYY-MM-DD HH:mm”。我猜它的工作方式与使用 .utcOffset() 函数时不同。
谁能帮我解决这个问题?
【问题讨论】:
-
使用moment时的一般规则:所有以
_开头的属性(如_d)都用于internal use,不应使用。请注意,您显示的代码与屏幕截图中的代码不同。最后,我认为了解toJSONLocal返回的内容可能很有用(timeZoneInfo.selectedDateTime的值是多少?)
标签: javascript angularjs datetime timezone momentjs