【问题标题】:Convert UNIX Epoch to Datetime depending on culture根据文化将 UNIX 纪元转换为日期时间
【发布时间】:2016-11-03 15:12:18
【问题描述】:

我正在开发一种接收 UNIX 时间戳和文化的方法:

public DateTime unixEpochToDateTime(long unixTimeStamp, string culture) {
    ...
}

调用示例:

DateTime t = unixEpochToDateTime(1478181983, "es-ES");

我需要在多种文化之间转换此 UTC 时间,而不使用 TimeZone.CurrentTimeZone,因为此方法将在服务器中运行,并且服务器文化始终相同。

例如,如果两个用户在 EE.UU 和英国请求我的方法,我得到相同的 UTC?

我很困惑。

【问题讨论】:

  • 正如我对你的问题一样(目前)。你有一个 unix 时间戳,我可以假设时间戳也来自 UTC,还是这个时间戳存储了一个偏移量?
  • @Igor 时间戳为 UTC。谢谢!
  • 那为什么不在 UTC 创建 DateTime 实例呢?此外,日期时间有一个Kind 的属性,您可以设置它允许您指定UTC(构造函数中还有一个重载,您也可以在其中设置它)。见静态方法DateTime.SpecifyKind
  • 我正在尝试这个:DateTime datetime = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc); datetime = datetime.AddSeconds(unixTimeStamp) 但总是返回与我的文化不同的时间(少一小时)
  • 不确定您的本地偏移量是多少,但要获取您的本地时间,您可以使用msdn.microsoft.com/en-us/library/…var mylocal = datetime.ToLocalTime();

标签: c# cultureinfo


【解决方案1】:

我觉得你可以试试nodatime。它有很多有用的方法。

【讨论】:

    【解决方案2】:

    问题解决了……

    如果.NET没有提供机制是因为无法根据文化来确定UTC的时差。

    基本上是因为一种文化可以有不同的时区。

    例如,文化“es-ES”有 2 个区域:GTM + 0 代表加那利群岛,UTC + 1 代表伊比利亚半岛。

    【讨论】:

      猜你喜欢
      • 2016-09-15
      • 2013-04-02
      • 2013-01-08
      • 2018-12-27
      • 1970-01-01
      • 2018-08-03
      • 2018-10-01
      • 2014-01-25
      相关资源
      最近更新 更多