日期类型转换时间戳及时间戳转时间类型

 

 

//日期转时间戳  
      public static long DateTimeToUnixTimestamp(DateTime dateTime)
        {
            return (dateTime.ToUniversalTime().Ticks - 621355968000000000) / 10000000;
        }

//时间戳转日期
public static DateTime ToDateTime(this string timestamp)
{
        if(string.IsNullOrEmpty(timestamp))
       {
        throw new ArgumentNullException(timestamp);
       }
        DateTime dateTimeStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970,1,1));
    long lTime = long.Parse(timestamp + "0000000");
    TimeSpan toNow = new TimeSpan(lTime);
    return dateTimeStart.Add(toNow);
}

 

 

 

 

 

 

 版本号相关操作
 --/// <summary>
        --/// 已运行的最大行版本号
        --/// </summary>
        --public static byte[] RunMaxVersionNum = { 0x0 };
          --var nowMaxVersionNum = channelCommDal.GetMaxVersionNum(dbConnection);
          --        public byte[] GetMaxVersionNum(IDbConnection dbConnection)
    --    {
    --        return DbHelper.Default.QueryScalar<byte[]>(dbConnection,
    --            "SELECT MAX(VersionNum) FROM dbo.Fct_ChannelCommodity");
    --    }

           --var runVersionNum = "0x" + BitConverter.ToString(RunMaxVersionNum).Replace("-", "");

        --public static bool ByteEquals(byte[] b1, byte[] b2)
        --{
        --    if (b1 == null && b2 == null)
        --    {
        --        return true;
        --    }
        --    if (b1 == null || b2 == null)
        --        return false;
        --    if (b1.Length != b2.Length)
        --        return false;
        --    return !b1.Where((t, i) => t != b2[i]).Any();
        --}
        
        --if (ByteEquals(nowMaxVersionNum, RunMaxVersionNum))
        
        -- Version = Math.Abs(Guid.NewGuid().GetHashCode()).ToString(),   --nvarchar(64)

 

 Helper类:

#region Unix时间戳:是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。
        public static long DateTimetoUnix(DateTime dateTime)
        {
            System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1)); // 当地时区
            long timeStamp = (long)(dateTime - startTime).TotalSeconds; // 相差秒数
            return timeStamp;
        }
        /// <summary>
        /// unix时间戳转换成日期
        /// </summary>
        /// <param name="unixTimeStamp">时间戳(秒)</param>
        /// <returns></returns>
        public static DateTime UnixTimestampToDateTime(long unixTimeStamp)
        {
            System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1)); // 当地时区
            DateTime dt = startTime.AddSeconds(unixTimeStamp);
            return dt;
        }
        #endregion



        #region JavaScript时间戳:是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总毫秒数。
        public static long DateTimetoJsTimes(DateTime dateTime)
        {

            System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1)); // 当地时区

            long timeStamp = (long)(dateTime - startTime).TotalMilliseconds; // 相差毫秒数

            return timeStamp;
        }

        public static DateTime JsTimestampToDateTime(long jsTimeStamp)
        {

            System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1)); // 当地时区

            DateTime dt = startTime.AddMilliseconds(jsTimeStamp);
            return dt;
        }

        #endregion  

        //日期转Unix时间戳  
        public static long DateTimeToUnixTimestamp(DateTime dateTime)
        {
            return (dateTime.ToUniversalTime().Ticks - 621355968000000000) / 10000000;
        }

        //Unix时间戳转日期
        public static DateTime ToDateTime(this string timestamp)
        {
            if (string.IsNullOrEmpty(timestamp))
            {
                throw new ArgumentNullException(timestamp);
            }
            DateTime dateTimeStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1));
            long lTime = long.Parse(timestamp + "0000000");
            TimeSpan toNow = new TimeSpan(lTime);
            return dateTimeStart.Add(toNow);
        }

 

  

参考:https://www.cnblogs.com/polk6/p/6024892.html

1. 什么是时间戳

首先要清楚JavaScript与Unix的时间戳的区别:

JavaScript时间戳:是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总毫秒数

Unix时间戳:是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数

可以看出JavaScript时间戳总毫秒数,Unix时间戳是总秒数

比如同样是的 2016/11/03 12:30:00 ,转换为JavaScript时间戳为 1478147400000;转换为Unix时间戳为 1478147400。

 

2. JavaScript时间戳相互转换

2.1 C# DateTime转换为JavaScript时间戳

1
2
3
System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1)); // 当地时区
long timeStamp = (long)(DateTime.Now - startTime).TotalMilliseconds; // 相差毫秒数
System.Console.WriteLine(timeStamp);

 

2.2 JavaScript时间戳转换为C# DateTime

1
2
3
4
long jsTimeStamp = 1478169023479;
System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1)); // 当地时区
DateTime dt = startTime.AddMilliseconds(jsTimeStamp);
System.Console.WriteLine(dt.ToString("yyyy/MM/dd HH:mm:ss:ffff"));

 

3. Unix时间戳相互转换

3.1 C# DateTime转换为Unix时间戳

1
2
3
System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1)); // 当地时区
long timeStamp = (long)(DateTime.Now - startTime).TotalSeconds; // 相差秒数
System.Console.WriteLine(timeStamp);

 

3.2 Unix时间戳转换为C# DateTime

1
2
3
4
long unixTimeStamp = 1478162177;
System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1)); // 当地时区
DateTime dt = startTime.AddSeconds(unixTimeStamp);
System.Console.WriteLine(dt.ToString("yyyy/MM/dd HH:mm:ss:ffff"));
posted @ 2016-02-28 07:52  BloggerSb  阅读(899)  评论(0编辑  收藏  举报