Answers:
我总是使用类似以下的内容:
public static String GetTimestamp(this DateTime value)
{
return value.ToString("yyyyMMddHHmmssfff");
}
这将为您提供一个类似于200905211035131468的字符串,因为该字符串从时间戳的最高位到最低位,如果您要将值粘贴在数据库中,则可以使用SQL查询中的简单字符串排序按日期进行排序
您可以使用DateTime.Ticks属性,该属性是一个长期且通用的可存储属性,始终在紧凑型框架上也可以使用。只要确保您的代码在9999年12月31日之后就不再使用;)
当您需要几秒钟的时间戳时,可以使用以下方法:
var timestamp = (int)(DateTime.Now.ToUniversalTime() - new DateTime(1970, 1, 1)).TotalSeconds;
如果希望与实际实时时间相对应的时间戳,但又希望它们是唯一的(对于给定的应用程序实例),则可以使用以下代码:
public class HiResDateTime
{
private static long lastTimeStamp = DateTime.UtcNow.Ticks;
public static long UtcNowTicks
{
get
{
long orig, newval;
do
{
orig = lastTimeStamp;
long now = DateTime.UtcNow.Ticks;
newval = Math.Max(now, orig + 1);
} while (Interlocked.CompareExchange
(ref lastTimeStamp, newval, orig) != orig);
return newval;
}
}
}