我试图用时间戳将一些东西保存到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
现在我的问题是:如果第二个片段甚至是正确的?如何将其转换回“正常”时间戳,或者如何从中获取可读的日期时间信息?
答案 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);
}