我想将我的日期时间转换为TimeStamp C#?

时间:2017-01-19 10:30:46

标签: c#

我想将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;
}

1 个答案:

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