DateTime和TimeStamp相互转换

        /// <summary>
        /// 本时区日期时间转成UTC时间并计算时间戳,精确到毫秒
        /// </summary>
        /// <param name="local_datetime">本地时间</param>
        /// <returns>13位UTC时间戳</returns>
        public static long LocalDateTimeToUTCTimestamp(DateTime local_datetime)
        {
            DateTime dd = new DateTime(1970, 1, 1, 0, 0, 0, 0);
            DateTime timeUTC = local_datetime.ToUniversalTime(); // DateTime.SpecifyKind(datetime, DateTimeKind.Utc);//本地时间转成UTC时间
            TimeSpan ts = (timeUTC - dd);
            return (Int64)ts.TotalMilliseconds;//精确到毫秒
        }

        /// <summary>
        /// UCT时间计算的时间戳转本时区日期时间
        /// </summary>
        /// <param name="utc_timeStamp">UTC时间戳</param>
        /// <returns>本地时间</returns>
        public static DateTime UTCTimestampToLocalDateTime(long utc_timeStamp)
        {
            DateTime dd = new DateTime(1970, 1, 1, 0, 0, 0, 0);
            utc_timeStamp = utc_timeStamp * 10000;
            TimeSpan ts = new TimeSpan(utc_timeStamp);
            return dd.Add(ts).ToLocalTime();
        }


        /// <summary>
        /// 本时区日期时间转成本时区的时间戳,精确到秒
        /// </summary>
        /// <param name="local_datetime">本地时间</param>
        /// <returns>10位本时区的时间戳</returns>
        public static long DateTimeToTimestamp_Local(DateTime local_datetime)
        {
            DateTime dd = new DateTime(1970, 1, 1, 0, 0, 0, 0).ToLocalTime();
            TimeSpan ts = (local_datetime - dd);
            return (Int64)ts.TotalSeconds;//精确秒
        }

        /// <summary>
        /// 将本时区的时间戳转本地日期时间
        /// </summary>
        /// <param name="local_timeStamp"></param>
        /// <returns></returns>
        public static DateTime TimestampToDateTime_Local(long local_timeStamp)
        {
            DateTime dtStart = new DateTime(1970, 1, 1, 0, 0, 0).ToLocalTime();
            long lTime = ((long)local_timeStamp * 10000000);
            TimeSpan toNow = new TimeSpan(lTime);
            DateTime targetDt = dtStart.Add(toNow);
            return targetDt;
        }


        /// <summary>
        /// 测试单击事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Btn_Click(object sender, RoutedEventArgs e)
        {
            var dtNow = DateTime.Now;

            System.Diagnostics.Debug.WriteLine("DateNow:" + dtNow.ToString("yyyy-MM-dd HH:mm:ss.fff"));

            var timeStamp1 = LocalDateTimeToUTCTimestamp(dtNow);
            System.Diagnostics.Debug.WriteLine("timeStamp1:" + timeStamp1);
            var dateTime1 = UTCTimestampToLocalDateTime(timeStamp1);
            System.Diagnostics.Debug.WriteLine("dateTime1:" + dateTime1.ToString("yyyy-MM-dd HH:mm:ss.fff"));

            var timeStamp2 = DateTimeToTimestamp_Local(dtNow);
            System.Diagnostics.Debug.WriteLine("timeStamp2:" + timeStamp2);
            var dateTime2 = TimestampToDateTime_Local(timeStamp2);
            System.Diagnostics.Debug.WriteLine("dateTime2:" + dateTime2.ToString("yyyy-MM-dd HH:mm:ss.fff"));
        }

测试结果:

DateNow:2022-11-23 15:44:51.173
timeStamp1:1669189491173
dateTime1:2022-11-23 15:44:51.173
timeStamp2:1669189491
dateTime2:2022-11-23 15:44:51.000

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值