将double转换为datetime始终失败

时间:2012-01-12 01:52:56

标签: c# datetime

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

代码

DateTime dt=DateTime.FromOADate(348020617.0);

3 个答案:

答案 0 :(得分:3)

来自MSDN文章:

  

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

答案 1 :(得分: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)转换为美国东部时间下午6:23:37的01/10/81

答案 2 :(得分:0)

您可以制作如下方法:
在使用此方法之后的第一个商店日期(使用此方法为日期长度为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);
        }