gpt4 book ai didi

date - 使用 Dojo 处理(生日)日期和时区

转载 作者:行者123 更新时间:2023-12-01 07:33:45 26 4
gpt4 key购买 nike

我有一个简单的小部件,它有:

<input class="input" id="${id}_dateOfBirth" name="dateOfBirth" data-dojo-type="dijit/form/DateTextBox" />

请注意,今天是生日。因此,它意味着保持相同,无论您身在何处(不应该发生时区)。如果您 1 月 10 日凌晨 3:00 出生在英国,并且在纽约查看您的个人信息,您应该仍然看到 1 月 10 日,而不是 9 日!

我现在是 GMT+8。当我提交此表单时,这实际上是在我输入 1/1/1970 时到达服务器的:

dateOfBirth: "1969-12-31T16:00:00.000Z"     

这很糟糕,因为距离实际日期还差 8 小时。

基本上,我需要一种方法让 DateTextBox 显示来自服务器的日期,有效地忽略浏览器的时区。

最佳答案

FWIW,这是我的 UTCDateTextBox 变体:

define([
"dojo/_base/declare",
"dijit/form/DateTextBox"
], function(declare, DateTextBox) {
function isValidDate(value) {
return value instanceof Date && isFinite(value.getTime());
}
function toUTCDate(value) {
if (isValidDate(value)) {
value = new Date(
Date.UTC(value.getFullYear(), value.getMonth(), value.getDate())
);
}
return value;
}
return declare(DateTextBox, {
_getValueAttr : function() {
return toUTCDate(this.inherited("_getValueAttr", arguments));
}
});
});

对于我的用例,我发现我不需要覆盖 _setValueAttr()。通过上述实现,当getUTCXXX()toUTCString()toISOString()toJSON()是调用从 _getValueAttr() 返回的日期对象,然后返回具有零时间元素的正确 UTC 日期。

希望这对您有所帮助。

关于date - 使用 Dojo 处理(生日)日期和时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21491888/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com