Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# NodaTime:使用NodaTime库c处理与时区相关的问题#_C#_Nodatime - Fatal编程技术网

C# NodaTime:使用NodaTime库c处理与时区相关的问题#

C# NodaTime:使用NodaTime库c处理与时区相关的问题#,c#,nodatime,C#,Nodatime,这里我给出了我的代码和发生的事情 当我将时区id传递给.net时区时,其工作代码如下 var zoneId = "India Standard Time"; var zone = TimeZoneInfo.FindSystemTimeZoneById(zoneId); var now = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, zone); string xx1 = now.ToLongTimeString

这里我给出了我的代码和发生的事情

当我将时区id传递给.net时区时,其工作代码如下

    var zoneId = "India Standard Time";
    var zone = TimeZoneInfo.FindSystemTimeZoneById(zoneId);
    var now = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, zone);
    string xx1 = now.ToLongTimeString();
当我将同一时区id印度标准时间传递给noda time library时,我收到错误“来源TZDB未知时区印度标准时间:2014e(映射:9723)”

我的代码如下为野田佳彦时间

    var zoneId = "India Standard Time";
    DateTimeZone _zone = DateTimeZoneProviders.Tzdb[zoneId];
    ZonedDateTime _now = SystemClock.Instance.Now.InZone(_zone);
   string xx= now.ToLongTimeString();
只需告诉我如何将时区传递到野田佳彦图书馆,以获得
印度标准时间或GMT标准时间


谢谢

正如错误消息所说,您提供的字符串不在(Olson数据库)中。有一个:是“亚洲/加尔各答”。试试你的区域字符串


“Etc/GMT”是GMT的字符串,wiki说它是时区字符串“UTC”的快捷方式。

如果要将BCL时区传递给Noda time,只需使用BCL提供程序:

DateTimeZone _zone = DateTimeZoneProviders.Bcl[zoneId];
这将找到相关的
时区信息
,提取其调整规则,并将其转换为节点时间表示。然后,您可以像使用任何其他
DateTimeZone
一样使用它


请注意,这些时区ID是特定于Windows的。如果您可以使用IANA(TZDB)时区ID,通常会使您的数据更便于其他系统移植。

我正在从浏览器获取时区,并将代码发送到服务器端以获取当前时间。浏览器以这种方式返回时区“印度标准时间或GMT标准时间”,但这里你说我需要以这种方式将时区“亚洲/加尔各答”或“Etc/GMT”提供给野田图书馆。所以,请指导我如何从浏览器中获取时区,这种方式将与野田库一起使用。谢谢有人告诉我使用Nodatime库而不是DotNet内置的datetime有什么好处吗?我已经回答了你提出的问题。如果你有更多的问题,请提出新的问题,或者最好还是做一些基础研究!我敢肯定你已经问过浏览器时区的问题,我也提供了一些帮助,在一个问题上你删除了。另请参见对您第二条评论的回应,野田佳彦时间网站上有一篇优秀的解释性/介绍性文章,但是,如果您没有可用的奥尔森时区,则可能需要使用DateTime或DateTimeOffset。我建议你改进你的需求,做你的研究,如果你尝试的方法不起作用,就发布一个新问题,要求进一步的指导。希望对你有所帮助。谢谢。几天后我会发布一个关于这个话题的新问题。谢谢你的回答。IANA(TZDB)和BCL时区有什么区别?@Thomas:.NET中的BCL(基类库)使用Windows中的时区信息-您可以通过TimeZoneInfo访问这些信息。这就是BCL提供者。它们是特定于Windows的,在某些方面相当有限。TZDB/IANA是托管在IANA.org上的时区数据库,也称为ZoneInfo,也称为tz,也称为Olson。它们几乎是事实上的标准外窗。