我想将C#中的日期时间(例如2009-06-22 16:35:16.000
)转换为此类1196550000000
。我尝试了以下方法,但它失败了。
public static double GetTimestamp(DateTime value)
{
long ticks = DateTime.UtcNow.Ticks - DateTime.Parse(value.ToString()).Ticks;
ticks /= 10000000; //Convert windows ticks to seconds
Int64 timestamp = ticks;
return timestamp;
}
答案 0 :(得分:0)
首先,您不需要ToString()
并重新解析DateTime
。如果您只需要Date
,则可以使用DateTime.Date
属性。
然后,这应该足够简单(使用DateTime.Now
作为参考点):
public static double GetTimestamp(DateTime value)
{
return new TimeSpan(DateTime.UtcNow.Ticks - value.Ticks).TotalSeconds;
}
如果你在问题中所做的解析确实是指从DateTime
中提取日期,你可以使用以下内容:
public static double GetTimestamp(DateTime value)
{
return new TimeSpan(DateTime.UtcNow.Ticks - value.Date.Ticks).TotalSeconds;
}
编辑:您似乎想要某种posix时间转换,可以这样实现:
private static readonly DateTime POSIXRoot = new DateTime(1970, 1, 1, 0, 0, 0, 0);
public static double GetPosixSeconds(DateTime value)
{
return (value - POSIXRoot).TotalSeconds;
}
public static DateTime GetDateTime(double posixSeconds) {
return POSIXRoot.AddSeconds(posixSeconds);
}