将double转换为datetime总是失败
本文关键字:失败 datetime double 转换 | 更新日期: 2023-09-27 18:20:07
我用记事本打开Safari浏览器的History.plist文件,发现访问URL的编码日期时间是9位+DOT+1位。我不知道如何将其解释为合适的日期时间格式,我想将其更改为当前日期。
代码
DateTime dt=DateTime.FromOADate(348020617.0);
来自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);
}