当前位置: 首页 > 面试题库 >

如何检查DST(夏令时)是否有效以及偏移量是多少?

笪昌翰
2023-03-14
问题内容

这是我的JS代码所需要的:

var secDiff = Math.abs(Math.round((utc_date-this.premiere_date)/1000));
this.years = this.calculateUnit(secDiff,(86400*365));
this.days = this.calculateUnit(secDiff-(this.years*(86400*365)),86400);
this.hours = this.calculateUnit((secDiff-(this.years*(86400*365))-(this.days*86400)),3600);
this.minutes = this.calculateUnit((secDiff-(this.years*(86400*365))-(this.days*86400)-(this.hours*3600)),60);
this.seconds = this.calculateUnit((secDiff-(this.years*(86400*365))-(this.days*86400)-(this.hours*3600)-(this.minutes*60)),1);

我想获取日期时间,但是如果使用了夏令时,则日期会减少1小时。我不知道如何检查是否已使用DST。

我怎么知道夏令时的开始和结束?


问题答案:

此代码使用的事实是,在标准时间与夏令时(DST)期间getTimezoneOffset返回 更大的
值。因此,它确定了“标准时间”期间的预期输出,并比较了给定日期的输出是否相同(“标准”)或更少(“ DST”)。

请注意,对于UTC 以西 的区域,getTimezoneOffset返回的分钟数为 数,通常表示为
数小时(因为它们位于UTC之后)。例如,洛杉矶是 UTC-8h* 标准, UTC-7h
DST。在12月(冬季,标准时间)返回(正480分钟),而不是。它返回东半球的 负数 (例如冬天的悉尼,尽管“提前”( UTC + 10h )。

getTimezoneOffset``480``-480 __-600 *

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.isDstObserved = function () {
    return this.getTimezoneOffset() < this.stdTimezoneOffset();
}

var today = new Date();
if (today.isDstObserved()) { 
    alert ("Daylight saving time!");
}


 类似资料:
  • 问题内容: 只是为了验证这一点:我有这种la脚和脑死法,可以计算当前位置的时区偏移量。我想知道是否在需要调整“夏令时”时需要进行调整(目前,我所在的位置为CET时区,所以是“冬季时间”,因此很难验证)。 感谢您的任何提示。 问题答案: 通常,Joda时间会自己照顾DST,因此您不必担心。但是,我注意到您正在传递给getOffset()。鉴于时区偏移量取决于日期,因此您确实应该传递计算偏移量的日期/

  • 问题内容: 我的webapp允许用户上传jar文件。但是,将jar文件上传后,它已损坏。我已经通过比较md5校验和(winmd5free)对此进行了验证。 上传的jar文件看起来“正常”和“正确” 与原始文件相比,文件大小看起来不错(在KB级别) 我可以使用7z打开上载的jar文件并查看其内容(资源和类文件),并且与原始文件相比,一切都相同 当我打开上载的jar文件(使用Notepad ++)时,

  • 在我的网站中,用户A创建了一个从上午9:00开始的事件。我将该时间转换为GMT,这样,如果用户B在两小时前的不同时区看到该事件,它可以转换为用户B的时区,并显示该事件在11:00AM开始。 我唯一的想法是,当我得到如下所示的时区偏移量时,我是否应该总是将日期设置为一月,以便无论实际月份如何,我总是得到相同的时区偏移量?或者有没有更好的方法来处理这件事?

  • 以下是场景: 我有一个日期和一个不同的日期格式。示例: 日期:2016-10-19 日期格式:“DD-MM-YYYY”。 我需要检查这个日期是否有效。 我尝试过跟踪事情 d.isValid()每次返回false。Moment.js解析给定格式的日期吗? 然后我尝试先在中格式化日期,然后将其传递给矩。js: 现在<代码>日期。isValid()给了我想要的结果,但现在是时候了。js日期对象创建两次。

  • 我已经混淆了我的apk,但文件大小只从12MB减少到10.5MB。 这只是一个相对较小的减少的原因可能是因为我的应用程序使用了几个大型库,但有没有任何方法,我可以检查已执行的模糊级别? 以防万一,这是我的proguard-project.txt文件... ...我使用的库是、和。

  • 问题内容: 如何检查会话是否无效?API中没有方法。 一样吗?如果没有,有什么区别? 问题答案: 如果您想根据请求知道它是否有效: 如果您存储了对该会话的引用并需要验证,我会