首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JavaScript中的DST

JavaScript中的DST
EN

Stack Overflow用户
提问于 2013-07-17 22:48:39
回答 1查看 292关注 0票数 0

如何在JS文件中检查当前日期是否为DST?

在C#中,可以使用以下代码来检查这一点。有没有人能在JS中推荐类似的代码?

代码语言:javascript
复制
var timezone = TimeZone.CurrentTimeZone
var tzById = TimeZoneInfo.FindSystemTimeZoneById(timezone.StandardName);
var localDate = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, tzById);
EN

回答 1

Stack Overflow用户

发布于 2013-07-18 03:47:09

让我们从您提供的C#代码开始。你有个虫子。FindSystemTimeZoneById需要来自TimeZoneInfo对象的Id属性的值。您正在通过TimeZone对象的StandardName来查找它,这可能会起作用,但仅适用于某些时区,而且仅适用于英语系统。Id不是本地化的,但名称是本地化的。真的,你永远不应该使用TimeZone。只需使用TimeZoneInfo即可。如果您想要本地TimeZoneInfo,那么只需使用TimeZoneInfo.Local

但实际上,您刚刚编写了一个精心设计的DateTime.Now版本。除此之外,您的代码不会做其他任何事情。等价的JavaScript就是new Date()

因此,您询问了如何确定当前日期是否为夏令时。我还会假设您指的是当地时区。在C#中,它就是DateTime.Now.IsDaylightSavingTime。在JavaScript中,这就有点棘手了。

有几种不同的方法,但这一种方法非常简单。详细解释请参见this site

代码语言:javascript
复制
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();
}

现在您可以检查new Date().dst并获得一个简单的true/false结果。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17703031

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档