UNIX时间戳

UNIX时间戳 其实是现在的时间到伦敦时间1970-01-01 00:00:00 秒的时间时间, 我们是在东8区,当时的北京时间是1970-01-01 08:00:00

所以:

Unix时间戳 = 我们当前的时间 Date.Now - 我们这个时区的当时那个时间,也就是 1970-01-01 08:00:00  

所以是: TimeSpan ts = DateTime.Now- TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1));

后面是过的1970-1-1我们这个时区的时间,也就是1970-01-01 08:00:00  

附录:源码:  或者是,将当前时间转化为伦敦时间

Convert.ToInt32((time.ToUniversalTime() - new DateTime(1970,1,1)).TotalSeconds);

在js中可以这样得到这个事件:

parseInt(date.getTime() / 1000);

而这个事件时有误的: 这个会多了8个小时的时间

parseInt((new Date() - new Date(1970,0,1)) / 1000)

而这样是正确的:

parseInt((new Date() - new Date(0)) / 1000)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
                
namespace QDTravel.TCApi
{
    public class DateTimeHelper
    {
        #region 私有构造函数,防止被实例化。
        /// <summary>
        /// 初始化 <see cref="DateTimeHelper"/> 类的新实例。
        /// </summary>
        private DateTimeHelper()
        {
                
        }
        #endregion
                
        #region 将时间转换成UNIX时间戳。[GetStamp(DateTime time)]
        /// <summary>
        /// 将时间转换成UNIX时间戳。
        /// </summary>
        /// <param name="dt">时间。</param>
        /// <returns>UNIX时间戳。</returns>
        public static UInt32 GetStamp(DateTime time)
        {
            if (time <= DateTime.MinValue)
                time = new DateTime(1990, 1, 1);
            TimeSpan ts = time - TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1));
            UInt32 uiStamp = Convert.ToUInt32(ts.TotalSeconds);
            return uiStamp;
        }
        #endregion
                
        #region 将当前时间转换成UNIX时间戳。[GetStamp()]
        /// <summary>
        /// 将当前时间转换成UNIX时间戳。
        /// </summary>
        /// <returns>UNIX时间戳。</returns>
        public static UInt32 GetStamp()
        {
            return GetStamp(DateTime.Now);
        }
        #endregion
                
        #region 将UNIX时间戳转换成时间。[GetDateTime(UInt32 uiStamp)]
        /// <summary>
        /// 将UNIX时间戳转换成时间。
        /// </summary>
        /// <param name="uiStamp">UNIX时间戳。</param>
        /// <returns>时间。</returns>
        public static DateTime GetDateTime(UInt32 uiStamp)
        {
            DateTime dt = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1)).AddSeconds(uiStamp);
            return dt;
        }
        #endregion
                
                
    }
}
原文地址:https://www.cnblogs.com/zhanhengzong/p/3035317.html