【问题标题】:DST in JavaScriptJavaScript 中的夏令时
【发布时间】:2013-07-16 04:44:26
【问题描述】:

如何在 JS 文件中查看当前日期是否在夏令时?

在 C# 中有以下代码可用于检查这一点。任何人都可以在 JS 中提出类似的代码吗?

var timezone = TimeZone.CurrentTimeZone
var tzById = TimeZoneInfo.FindSystemTimeZoneById(timezone.StandardName);
var localDate = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, tzById);

【问题讨论】:

    标签: c# javascript timezone dst


    【解决方案1】:

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

    但实际上,您刚刚编写了一个精心制作的 DateTime.Now 版本。您的代码除此之外不执行任何操作。等效的 JavaScript 就是 new Date()

    所以,您问如何确定当前日期是否处于夏令时。我还将假设您的意思是当地时区。在 C# 中,它只是 DateTime.Now.IsDaylightSavingTime。在 JavaScript 中,这有点棘手。

    有几种不同的方法,但这个方法很简单。详细解释见this site

    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 并获得简单的真/假结果。

    【讨论】:

      猜你喜欢
      • 2023-03-20
      • 2011-01-06
      • 2012-03-21
      • 1970-01-01
      • 2013-10-23
      • 1970-01-01
      • 1970-01-01
      • 2023-04-05
      • 2011-06-21
      相关资源
      最近更新 更多