将double转换为datetime总是失败

本文关键字:失败 datetime double 转换 | 更新日期: 2023-09-27 18:20:07

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

代码

DateTime dt=DateTime.FromOADate(348020617.0);

将double转换为datetime总是失败

来自MSDN文章:

DateTime.FromOADate(d);其中d必须是负值之间的值657435.0至阳性2958466.0。

如果这是一个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

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

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);
        }