【问题标题】:I Want Convert My Datetime to TimeStamp C#?我想将我的日期时间转换为时间戳 C#?
【发布时间】:2017-06-04 00:25:45
【问题描述】:

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

【问题讨论】:

标签: c#


【解决方案1】:

首先,您不需要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);
}

【讨论】:

  • 我用这个方法确保覆盖
  • public static DateTime RetunValuedate(double Date) { var dt = new DateTime(1970, 1, 1, 0, 0, 0, 0).AddSeconds( Math.Round(Date / 1000d)).ToLocalTime();日期时间 h = dt;返回 h; }>`
  • 我使用了一些方法来确保正确的数字,但我不知道如何突出显示它?
  • 所以你想从中获得某种 POSIX 时间?您只需将 DateTime.UtcNow.Ticks 替换为 posix 根目录,请参阅我的编辑。
  • 我有使用这个数字的图表如果你在我的方法上使用这个 (1196463600000) 它会返回 (12/1/2007) 这是唯一一种返回图表日期的方法
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-25
  • 2022-01-08
  • 1970-01-01
相关资源
最近更新 更多