c# 中是否有一个函数在给定 GMT 值(-12 到 -1 和 1 到 12)时返回日期和时间?
编辑:
我有一个包含所有 GMT 值的下拉列表框。现在我想显示所选 GMT 值的日期和时间...。
GMT 是格林威治标准时间,对吧?或者更好地称为UTC?
我认为您指的是 UTC offset。
换句话说,给定与 GMT 的偏移量,那个地方的时间是多少?
我认为是这样
DateTime.SpecifyKind(DateTime.UtcNow + new Timespan(offsetHours,0,0),
DateTimeKind.LocalTime);
除了,这不是真的,因为那个 DateTime 的“种类”将是 Local,这意味着无论计算机现在在哪里。您真正想要的是具有特定时区的 DateTimeKind。
附录
另请参阅 Codeplex 上的 PublicDomain 项目中包含的 TzTimeZone 类:http: //www.codeplex.com/publicdomain。
.NET 2.0 中包含的 System.TimeZone 不允许应用程序在给定时区简写名称或 UTC 偏移量的情况下实例化 TimeZone 对象。相反, System.TimeZone 类“知道”本地时区,但没有做太多其他事情。这使得很难采用任意时间(例如,2006 年 10 月 4 日下午 3:13,在洛杉矶)并将其格式化以在任意其他时区(例如,巴黎)中显示。
TzTimeZone 类为许多不同的时区提供了一个模型,包括它们与 UTC 的偏移量以及它们适用于夏令时的规则。
使用这组新的类,可以从一组众所周知的命名实例中实例化一个时区。格式化任何任意(命名)时区的时间值也很容易。特别是,很容易花时间(2006 年 10 月 4 日下午 3:13,在洛杉矶)并将其格式化以在巴黎展示。
你可以使用类似的东西:
var d = System.DateTime.Now().ToUniversalTime().AddHours(5)
DateTimeOffset是您要找的吗?它的构造函数之一采用 DateTime 和偏移量。
Paulo 的回答应该可以正常工作,但.NET 3.5 中的DateTimeOffset结构似乎是为您的问题而构建的。