1

c# 中是否有一个函数在给定 GMT 值(-12 到 -1 和 1 到 12)时返回日期和时间?

编辑:

我有一个包含所有 GMT 值的下拉列表框。现在我想显示所选 GMT 值的日期和时间...。

4

4 回答 4

2

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,在洛杉矶)并将其格式化以在巴黎展示。

于 2010-01-25T03:57:25.337 回答
0

你可以使用类似的东西:

var d = System.DateTime.Now().ToUniversalTime().AddHours(5)
于 2010-01-25T03:55:05.553 回答
0

DateTimeOffset是您要找的吗?它的构造函数之一采用 DateTime 和偏移量。

于 2010-01-25T03:57:49.243 回答
0

Paulo 的回答应该可以正常工作,但.NET 3.5 中的DateTimeOffset结构似乎是为您的问题而构建的。

于 2010-01-25T03:58:11.750 回答