Tag: 时区

操作系统显示语言为非英语时获取本地时区标识符

奇怪的是, TimeZone.CurrentTimeZone.StandardName按照计算机显示语言返回本地化名称。 我想要一个程序化标识符,我可以在下面的代码中提供给TimeZoneInfo 。 TimeZoneInfo timeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById(timeZone); FindSystemTimeZoneById需要一个唯一的非本地化程序标识符 我将计算机显示语言改为中文,当我执行TimeZone.CurrentTimeZone.StandardName时,我得到了一个本地化的unicode字符串。 然而,价值是正确的,但它是本地化的计算机显示语言,这是我不想要的。 我现在没有使用TimeZoneInfo.Local.Id选项,因为我的项目是在.Net 2.0中。 我还有哪些其他选项可以获得非本地化的时区标识符?

时区当前时间的缩写?

有没有办法可以使用时区缩写(PST,EDT,GMT等)并在WP7上用C#将其转换为当前时间? 我会假设我可以使用像TimeZoneInfo这样的东西来查找偏移量,但是如何从缩写中获得偏移量,或者从全时区域名称获得偏移量(通过将缩写映射到全名来获得)?

检测和存储Web应用程序客户端所在的时区的最佳方法是什么?

我有一个多时区Web应用程序,它将所有日期时间值以UTC格式存储在数据库中,当服务器上发生操作时,我可以轻松地将时间转换为UTC。 但是,当客户输入时间或时间跨度时,检测和存储它的最佳方法是什么? 我目前正在做以下事情: 获取Date.getTimezoneOffset()(javascript)的值 通过Page上的ICallbackEventHandler将其发布到服务器端代码。 将该值存储在会话中 在任何后续请求中,使用客户端的时区计算输出/输入日期时间值。 无论实际实现如何,这似乎都是一个优雅的解决方案。 有没有人有更好的方法?

使用Noda Time的Olson时区ID到Windows标准格式

Olson和Windows时间Id之间的转换在SO上多次出现; 许多人建议Jon Skeet的Noda Time来完成这项任务。 虽然谷歌代码页面声明有一个function可以在两者之间进行转换,但我找不到有关如何执行此操作的详细信息。 谁能指出我正确的方向?

转换时区之间的时间

我正在使用TimeZoneInfo.ConvertTime方法将时间从一个转换为另一个。 在将日期时间从1/6转换到珀斯时,将其从珀斯转换为Sri Jeyawardenepura,将其转换为1/31/2005 11.30pm 同时将时间转换回来(1月31日下午11点30分)从Sri Jeyawardenepura转到珀斯,它转换为1/1/2006 3.00 AM。 为什么时区转换会有一个小时的差异?

.NET中的“美国东部标准时间”与“东部标准时间”

在列出TimeZoneInfo返回的TimeZoneInfo.GetSystemTimeZones所有Id属性时,将显示两个版本的EST:US Eastern Standard Time和Eastern Standard Time。 有什么不同? 我也看到美国山地标准时间和山地标准时间,但我很确定这是因为美国版本是针对亚利桑那州的,它没有观察到夏令时。 我假设常规的山地标准时间适用于山区时区的其他美国州。 我对么? 美国时区的有用链接: http : //www.timetemperature.com/tzus/time_zone.shtml

如何根据加利福尼亚当前时间将UTC转换为PST或PDT?

我不能使用DateTime.Now因为服务器不一定位于Calfornia

当TimeZoneInfo.ConvertTimeToUtc为某些DateTime值时调用exception

当我为这个特定的dt值运行代码时,当我调用ConvertTimeToUtc方法时会抛出exception。 我的本地机器timeZoneId是“GMT标准时间” var tzi = TimeZoneInfo.FindSystemTimeZoneById(“Central Standard Time”); var dt = new DateTime(1995, 4, 2, 2, 55, 0); var t = TimeZoneInfo.ConvertTimeToUtc(dt, tzi); 例外是: System.ArgumentException was unhandled Message=”The supplied DateTime represents an invalid time. For example, when the clock is adjusted forward, any time in the period that is skipped is invalid.\r\nParameter

c#TimeZoneInfo序列化

我在序列化TimeZoneInfo对象时遇到了一些问题。 我试图在WCF服务的数据合同中使用TimeZoneInfo变量,但序列化失败。 所以我写了这段代码来测试序列化。 这是我的所作所为: var fileName = “tmp.xml”; var tz = TimeZoneInfo.Local; var dataSer = new DataContractSerializer(typeof(TimeZoneInfo)); try { using (var xml = new FileStream(fileName, FileMode.Create)) { dataSer.WriteObject(xml, tz); } } catch (Exception e) { Console.WriteLine(e.Message); } 现在,当我调用WriteObject方法时,它会抛出exception: 键入’System.TimeZoneInfo + AdjustmentRule []’,数据协定名称为“ArrayOfTimeZoneInfo.AdjustmentRule:http://schemas.datacontract.org/2004/07/System”,不是预期的。 考虑使用DataContractResolver或将任何静态未知的类型添加到已知类型列表中 – 例如,通过使用KnownTypeAttribute属性或将它们添加到传递给DataContractSerializer的已知类型列表中。 如果我尝试将[KnownType(typeof(System.TimeZoneInfo.AdjustmentRule []))]添加到类中,我会得到相同的错误。 如果我将此行添加到我的数据协定界面,我会收到编译错误: 错误1’System.TimeZoneInfo.AdjustmentRule’由于其保护级别而无法访问 根据文档,TimeZoneInfo类实现了ISerializable,因此它应该默认序列化。 谁能告诉我这里我做错了什么? 我将不胜感激任何帮助。 谢谢。

C#british summer time(BST)timezone的缩写

我需要显示一个带有当前时区缩写的标签。 我的电脑的时区目前设定为“(GMT)格林威治标准时间:都柏林,爱丁堡,里斯本,伦敦”。 因此,我希望看到BST显示,因为LN目前正处于英国夏季。 看起来这个信息(时区缩写)不可用。 看看GMT TimeZoneInfo,关于名字我只能看到 Id “GMT Standard Time” StandardName “GMT Standard Time” DaylightName “GMT Daylight Time” 有没有办法从“GMT日光时间”或任何其他可用的Windows时区信息到达BST?