C# 如何在.Net应用程序中使用区域时区?

C# 如何在.Net应用程序中使用区域时区?,c#,asp.net,timezone,C#,Asp.net,Timezone,我正在开发一个asp.net mvc应用程序。每个用户都有自己的时区 现在,我正在使用“TimeZoneInfo.GetSystemTimeZones”生成一个下拉列表,以便用户选择时区,这就是我存储在数据库中的内容 他们是这样的: 摩洛哥标准时间(00:00:00) UTC(00:00:00) 格林尼治标准时间(00:00:00) 我知道php使用不同的时区集,它们是“区域时区”,例如: 欧洲/巴黎 欧洲/伦敦 我的问题是:有没有办法在.NET应用程序中使用区域时区(如php)?我能想到的

我正在开发一个asp.net mvc应用程序。每个用户都有自己的时区

现在,我正在使用“TimeZoneInfo.GetSystemTimeZones”生成一个下拉列表,以便用户选择时区,这就是我存储在数据库中的内容
他们是这样的:
摩洛哥标准时间(00:00:00)
UTC(00:00:00)
格林尼治标准时间(00:00:00)

我知道php使用不同的时区集,它们是“区域时区”,例如:
欧洲/巴黎
欧洲/伦敦

我的问题是:有没有办法在.NET应用程序中使用区域时区(如php)?我能想到的唯一方法是将每个php区域时区绑定到.net时区

此外,“TimeZoneInfo.GetSystemTimeZones”还列出了机器上的所有时区。windows server、windows vista和windows xp的列表是否不同


希望这是有意义的,谢谢各位,我将使用这种方法在开始时用数据填充时区表,而不是每次从集合中提取数据。如果确实发生了变化,您可能会在以后的某个时候意外地更改每个人使用的ID。您也不必担心操作系统之间的任何潜在差异

听起来您在寻找或Olson数据库名称。基本上,这些是非Windows世界使用的名称:)

虽然我们最终也会支持Windows名称,但它们通常也会使用。不幸的是,野田佳彦还没有做好生产准备——当它准备好的时候,它应该是你问题的正确答案:)


同时,如果您肯定只打算使用Windows,我认为存储Windows时区Id是合理的-但请确保使用
Id
属性,而不是
StandardName
。Windows ID和Olson ID之间在web上有转换,但我不知道它们有多全面(或更新)。

php使用的区域名称模式通常称为Olson数据库。
您可以在以下位置找到windows zone(id)->Olson DB的转换表:

您可能还对(尽管还没有发布)感兴趣。乔恩·斯基特在电视上谈到了这一点,他还将使用奥尔森DB


如果在的列表/文档是完整且最新的,您可以通过

$supplementalData = simplexml_load_file('http://unicode.org/repos/cldr/trunk/common/supplemental/windowsZones.xml');

$zones = array();
foreach( $supplementalData->windowsZones->mapTimezones->mapZone as $zi ) {
  $zones[ (string)$zi['other'] ] = (string)$zi['type'];
}

file_put_contents('zoneconvert.php', '<?php function windowszone2olson($winzone) {
  static $zi = '.var_export($zones, true).';
  return isset($zi[$winzone]) ? $zi[$winzone] : false;
}');
$supplementalData=simplexml\u load\u文件('http://unicode.org/repos/cldr/trunk/common/supplemental/windowsZones.xml');
$zones=array();
foreach($supplementalData->windowsZones->mapTimezones->mapZone as$zi){
$zones[(字符串)$zi['other']]=(字符串)$zi['type'];
}

文件内容('zoneconvert.php','您对所选时区做了什么?它是否用于在页面上的某个位置显示时间?由于这不是一个php问题,因此将其取消标记为php。