【问题标题】:Conversion of double to datetime always fails将双精度转换为日期时间总是失败
【发布时间】:2015-06-05 22:27:11
【问题描述】:

我使用记事本打开 Safari 浏览器的 History.plist 文件,我发现访问 URL 的编码日期时间是 9 位 + DOT + 一位。我不知道如何将其解释为合适的日期时间格式,我希望将其更改为当前日期。

代码

DateTime dt=DateTime.FromOADate(348020617.0);

【问题讨论】:

    标签: c# datetime


    【解决方案1】:

    来自MSDN文章:

    日期时间.FromOADate(d);其中d 必须是介于负数之间的值 657435.0 到正 2958466.0。

    【讨论】:

      【解决方案2】:

      如果这是一个 UNIX 时间戳,那么您可以使用此函数进行转换(借用自 http://codeclimber.net.nz/archive/2007/07/10/convert-a-unix-timestamp-to-a-.net-datetime.aspx

      static DateTime ConvertFromUnixTimestamp(double timestamp)
      {
          DateTime origin = new DateTime(1970, 1, 1, 0, 0, 0, 0);
          return origin.AddSeconds(timestamp);
      }
      

      对于它的价值,您提到的时间戳 (348020617.0) 转换为 01/10/81 @ 6:23:37pm EST

      【讨论】:

        【解决方案3】:

        您可以制作如下方法:
        先将日期存储在字符串中,然后使用此方法(日期长度为八),但可以增加或减少。

        private DateTime ConvertToDate(string date)
                            {
                                if (date.Length !=8)
                                {
                                    return ConvertToDate("");
                                }
                    int iYear; int.TryParse(date.Substring(0, 4), out iYear);
                    int iMonth; int.TryParse(date.Substring(4, 2), out iMonth);
                    int iDay; int.TryParse(date.Substring(6, 2), out iDay);
                    return new DateTime(iYear, iMonth, iDay);
                }
        

        【讨论】:

          猜你喜欢
          • 2014-04-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-03-18
          • 1970-01-01
          • 1970-01-01
          • 2017-09-30
          • 2013-03-16
          相关资源
          最近更新 更多