.NET 获取时间戳


生成18位订单号

DateTime.Now.ToUniversalTime().Ticks - 537525800000000000

示例值
100000064399971543

获取时间错(秒)

(DateTime.Now.ToUniversalTime().Ticks - 621355968000000000) / 10000000

获取时间错(毫秒)

(DateTime.Now.ToUniversalTime().Ticks - 621355968000000000) / 10000

获取时间(秒)

TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970,1,1)).Add(new TimeSpan(1606878355l * 10000000l)).ToString()

获取时间(毫秒)

TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970,1,1)).Add(new TimeSpan(1606878355796 * 10000)).ToString()

封装方法

/// 
/// 获取时间戳10位(秒)
/// 
/// 
/// 
public static long GetTimestamp10(this DateTime dateTime)
{
    return (dateTime.ToUniversalTime().Ticks - 621355968000000000) / 10000000;
}

/// 
/// 获取时间戳13位(毫秒)
/// 
/// 
/// 
public static long GetTimestamp13(this DateTime dateTime)
{
    return (dateTime.ToUniversalTime().Ticks - 621355968000000000) / 10000;
}

/// 
/// 转换时间戳
/// 
/// 
/// 
public static DateTime ConvertTimestamp(this long timestamp)
{
    switch (timestamp.ToString().Length)
    {
        case 10:
            return TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1)).Add(new TimeSpan(timestamp * 10000000l));
        case 13:
            return TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1)).Add(new TimeSpan(timestamp * 10000));
        default:
            return new DateTime(1970, 1, 1);
            break;
    }
}

相关