呈现JavaScript / ExtJS Date对象时,日期始终相对于浏览器。
例如,时间戳4102338600000
将呈现为' Thu Dec 31 2099 00:00:00 GMT+0530 (India Standard Time)
'使用IST划分浏览器,将在EST分区浏览器中减少一天。
我从网上的文章中尝试了几种方法,例如抵消时区等,但没有看到直截了当的选择。
我们的申请需要统一日期,比如GMT / UTC /其他格式,不论时区如何。
在应用代码中,100个以上的地方,以下用于呈现日期:
format : 'd-M-Y',
有没有什么可以做同样的事情,但使用UTC代替本地转换?
答案 0 :(得分:1)
使用toUTCString
:
var date = new Date(4102338600000);
console.log(date.toUTCString());
"Wed, 30 Dec 2099 18:30:00 GMT"
<强>更新强>
确实, Ext.Date.format
会返回本地日期字符串表示。似乎没有开箱即用的方式让它返回UTC日期。你可以这样欺骗它:
var ms2UTCDate = function(ms) {
var date = new Date(ms);
return new Date(date.valueOf() + 60000 * date.getTimezoneOffset());
}
console.log(Ext.Date.format(ms2UTCDate(4102338600000), 'Y-m-d'));
2099-12-30
该技巧可以按如下方式刻录到Ext.Date.format
中(除非您确定不需要原始行为,否则不要这样做!):
var originalExtDateFormat = Ext.Date.format;
Ext.Date.format = function(date, format) {
if (date instanceof Date) {
date = new Date(date.valueOf() + 60000 * date.getTimezoneOffset());
}
return originalExtDateFormat.call(this, date, format);
}
答案 1 :(得分:1)
可能你可以在下面做:
有点冗长,但应该有效: - )