0

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

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

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

1 回答 1

0

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

但实际上,您刚刚编写了DateTime.Now. 您的代码除此之外不执行任何操作。等效的 JavaScript 是简单的new Date().

因此,您询问如何确定当前日期是否处于夏令时。我还将假设您的意思是当地时区。在 C# 中,它只是DateTime.Now.IsDaylightSavingTime. 在 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并获得一个简单的真/假结果。

于 2013-07-17T19:47:09.290 回答