gpt4 book ai didi

c# - 如何在 .net 核心中使用 TimeZoneInfo.GetAdjustmentRules()?

转载 作者:太空宇宙 更新时间:2023-11-03 15:12:59 25 4
gpt4 key购买 nike

我正在编写一些代码来处理时区问题,所以很自然地,我已经度过了糟糕的一天。特别是,我一直在努力获取时区的 DST 调整规则。根据source code对于 TimeZoneInfo,应该有一个名为 .GetAdjustmentRules() 的实例方法。它写于 2015 年初。

但是,此控制台应用程序无法针对 .net 标准 1.6 进行编译。

using System;

public class Program {
public static void Main() {
var tz = TimeZoneInfo.Local;
Console.WriteLine(tz.GetAdjustmentRules());
}
}

CS1061 'TimeZoneInfo' does not contain a definition for 'GetAdjustmentRules' and no extension method 'GetAdjustmentRules' accepting a first argument of type 'TimeZoneInfo' could be found (are you missing a using directive or an assembly reference?) timezonecore..NETCoreApp,Version=v1.0

事实上,当我通过反射检索方法列表时,我发现没有一个叫做 .GetAdjustmentRules()。有趣的是,一个名为 m_adjustmentRules 的私有(private)成员,我也许可以使用它。

但是 .GetAdjustmentRules() 在哪里?如果没有办法使用它,是否有另一种方法来获取这些信息?

最佳答案

“技巧”是您不直接引用 mscorlib,而是引用 System.Runtime,它是由 Microsoft.NETCore.App 的依赖项引入的System.Runtime 的目的是抽象出实际实现所有 System.* 对象的内容。 CoreCLR 在 mscorlib 中有实现,调用会转发给它。例如,CoreRT 运行时在 System.Private.CoreLib 中有实现(其中一些是纯 C# 实现,是 CoreCLR 中的 C++/ native 方法调用)。

因此,要确定您实际上可以在 TimeZoneInfo 上调用什么,这是寻找 1.0 的地方: https://github.com/dotnet/corefx/blob/release/1.0.0/src/System.Runtime/ref/System.Runtime.cs

分支 release/1.0.0release/1.1.0 都不包含 GetAdjustmentRules() 的定义,但是master 分支执行此操作,因此您可以期望该方法在 .NET Core 1.2 中可用。

当使用 NETStandard.Library 的库仅针对 netstandard2.0 时,该方法也将可用。 netstandard2.0 中可用内容的引用目前位于此处: https://github.com/dotnet/standard/tree/master/netstandard/ref

关于c# - 如何在 .net 核心中使用 TimeZoneInfo.GetAdjustmentRules()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40314498/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com