在没有转换当地时间的情况下获取c#的东部时间

时间:2014-12-11 05:00:50

标签: c# datetime

我知道有很多关于将时区转换为时区的解决方案,但是我想知道我们是否可以在没有从当地时间转换的情况下获得东部时间。

2 个答案:

答案 0 :(得分:2)

是的,不,如果你代表使用GMT,那么在你需要显示地点之前你不需要转换。

由于这个原因,时间总是在GMT中,服务应该在GMT时区下运行。

接收并存储GMT / UTC以外的任何时间都需要转换。

请注意,服务器的时区也应设置为GMT,以便按照我的指示工作。

当你设置这样的东西时,也可以更容易地引用和比较不同日历日期格式的时间和日期。

这就是为什么DateTime偏移进入框架和sql server的原因。如果服务器上的时区发生变化时不小心,那么本地格式的所有存储和加载日期都会发生变化。

日期比较是日期比较。 DateTime只包含一个以刻度形式定义的存储器结构,并使方法可以访问存储器的常用部分,例如日或年或时间或时间天等等。

此外,只有当您知道源和目的地偏移时才能进行转换,然后由-1 * (sourceOffset - destOffset)

给出计算总是给定的

括号中的部分代表时区差异。

答案 1 :(得分:1)

您要转换的DateTime是UTC格式并且名为theDate

DateTime eastern = TimeZoneInfo
  .ConvertTimeFromUtc(
    theDate,
    TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time"))

如果theDateKind Local这将抛出,只接受KindUtc的{​​{1}}值。当然,从本地转移到UTC很容易,我们甚至可以在需要时检查并进行转换,但是因为你说你想要这个转换“没有从当地时间转换”我假设你有你的时间在UTC和因此有例外会更好,因为它会警告你应该是UTC的时间被视为本地,并且一个错误可能会出现在其他地方。

这将使用东部夏令时,Unspecified是EDT生效的时间,因为这是EST的正常规则。要在夏天使用EST,您可以创建自己的TimeZoneInfo:

theDate