var today = new Date();
jQuery(function() {
var preferences_clock_hide = isPreferenceOn('preferences_clock');
if (!preferences_clock_hide) {
if(today.dst()){
jQuery('.server-time').countdown({since: new Date({/literal}{$smarty.now|date_format:"%Y, %m-1, %d"}{literal}), compact: true, format: 'HMS', timezone: -4});
}else{
jQuery('.server-time').countdown({since: new Date({/literal}{$smarty.now|date_format:"%Y, %m-1, %d"}{literal}), compact: true, format: 'HMS', timezone: -5});
}
}
});
Date.prototype.stdTimezoneOffset = function() {
var jan = new Date(this.getFullYear(), 0, 1);
var jul = new Date(this.getFullYear(), 6, 1);
return Math.max(jan.getTimezoneOffset(), jul.getTimezoneOffset());
}
Date.prototype.dst = function() {
return this.getTimezoneOffset() < this.stdTimezoneOffset();
}
如果我们在DST中,这段代码应该改变时间,但显然.dst()并不为真,尽管我们现在在DST中。这可能是一个小错误,但我希望你们能帮助我。JavaScript时间
P.S.我在这里提问是新的,所以我不知道这个meta。对不起。
预先感谢您。
编辑:我改变了代码,以这样的:`
var today = new Date();
Date.prototype.stdTimezoneOffset = function() {
var jan = new Date(this.getFullYear(), 0, 1);
var jul = new Date(this.getFullYear(), 6, 1);
return Math.max(jan.getTimezoneOffset(), jul.getTimezoneOffset());
}
Date.prototype.dst = function() {
return this.getTimezoneOffset() < this.stdTimezoneOffset();
}
jQuery(function() {
if(today.dst()) {
jQuery('.server-time').countdown({
since: new Date({/literal}{$smarty.now|date_format:"%Y, %m-1, %d"}{literal}),
compact: true,
format: 'HMS',
timezone: -4
});
}else{
jQuery('.server-time').countdown({
since: new Date({/literal}{$smarty.now|date_format:"%Y, %m-1, %d"}{literal}),
compact: true,
format: 'HMS',
timezone: -5
});
}
});
`
当我在控制台中进行测试,today.dst()返回true,但时区不因某些原因而改变。
EDIT2: 出于某种原因today.dst()是真实的,但代码放在了别人。
1)谢谢您的回复 2)它没有给我一个错误实际上 3)现在的DST应该是真实的,但它返回出于某种原因 –