什么';在C#中,它与Java中的TimeZone.getDefault().getID()等效吗?

什么';在C#中,它与Java中的TimeZone.getDefault().getID()等效吗?,c#,java,timezone,jodatime,nodatime,C#,Java,Timezone,Jodatime,Nodatime,对于居住在中的人,Java中的以下代码: String TimeZoneId=TimeZone.getDefault().getID(); System.out.println(TimeZoneId); 将打印 美洲/里贾纳 我尝试了TimeZoneInfo.GetSystemTimeZones(),但返回值似乎不是tzdb id。C#中是否有等效方法?通常可以使用TimeZone类来完成。根据我的理解,这是与本机库最接近的。为什么你需要那个特定的结果 看一看Windows等价物的转换表*,因

对于居住在中的人,Java中的以下代码:

String TimeZoneId=TimeZone.getDefault().getID();
System.out.println(TimeZoneId);
将打印

美洲/里贾纳


我尝试了
TimeZoneInfo.GetSystemTimeZones()
,但返回值似乎不是tzdb id。C#中是否有等效方法?

通常可以使用TimeZone类来完成。根据我的理解,这是与本机库最接近的。为什么你需要那个特定的结果

看一看Windows等价物的转换表*,因为Windows不完全支持TZID,请看下面的堆栈溢出问题以了解更多信息。我希望这更有用,因为我误读了你之前的问题!!!-对不起

//Get A reference to our timezone object
TimeZone t = TimeZone.CurrentTimeZone;

//Print out the display name
Console.WriteLine(t.StandardName);

请参考前面的问题
.Net不支持TZDB,因为Microsoft有自己的时区数据库。有关详细信息,请参阅

如果要使用TZDB区域,请使用库。你所问问题的确切翻译是:

using NodaTime;

...

var timeZoneId = DateTimeZoneProviders.Tzdb.GetSystemDefault().Id;
Console.WriteLine(timeZoneId);

类似的值由

Calendar.GetTimeZone

有关更多信息:

请参阅更新,更改了信息。你想用这个实现什么,也许还有别的方法?@HassanGhoncheh-不要把名字和ID混淆。而
时区
大多被弃用,取而代之的是
时区信息
。要获取当前Windows时区的id,请使用
TimeZoneInfo.Local.id