反向时间戳

时间:2012-05-17 15:44:22

标签: c# timestamp

我试图用时间戳将一些东西保存到Log表中,所以我首先这样做了:

public static string TimeStamp(
   this DateTime datetime, string timestamptFormat = "yyyyMMddHHmmssffff")
   {
     return datetime.ToString(timestamptFormat);
   }

然后我发现了一个这样的片段:

static public string ToReverseTimestamp(this DateTime dateTime)
{
return string.Format("{0:10}", DateTime.MaxValue.Ticks - dateTime.Ticks);
}

我开始想知道反向时间戳对什么有用,并遇到了this article

现在我的问题是:如果第二个片段甚至是正确的?如何将其转换回“正常”时间戳,或者如何从中获取可读的日期时间信息?

1 个答案:

答案 0 :(得分:2)

确保在转换前将DateTime转换为通用时间,以避免出现时区问题:

public static string ToReverseTimestamp(this DateTime dateTime)
{
    return (long.MaxValue - dateTime.ToUniversalTime().Ticks).ToString();
}

您可以通过将DateTime解析为string,计算long并使用{构建新的MaxValue - (MaxValue - x) = x,将值转换回DateTime值来自DateTimeKind.Utc的{​​1}}:

x

示例:

public static DateTime FromReverseTimestamp(string timestamp)
{
    return new DateTime(long.MaxValue - long.Parse(timestamp), DateTimeKind.Utc);
}