时间转时间戳与时间戳转时间

写一个时间的帮助类:

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace T_Test
{
    /// <summary>
    /// 时间相关
    /// Add by 成长的小猪(Jason.Song) on 2018/05/10
    /// http://blog.csdn.net/jasonsong2008
    /// </summary>
    public static class TimeHelper
    {
        /// <summary>
        /// 获取当前时间戳
        /// Add by 成长的小猪(Jason.Song) on 2019/05/07
        /// http://blog.csdn.net/jasonsong2008
        /// </summary>
        /// <param name="millisecond">精度(毫秒)设置 true,则生成13位的时间戳;精度(秒)设置为 false,则生成10位的时间戳;默认为 true </param>
        /// <returns></returns>
        public static string GetCurrentTimestamp(bool millisecond = true)
        {
            return DateTime.Now.ToTimestamp(millisecond);
        }

        /// <summary>
        /// 转换指定时间得到对应的时间戳
        /// Add by 成长的小猪(Jason.Song) on 2019/05/07
        /// http://blog.csdn.net/jasonsong2008
        /// </summary>
        /// <param name="dateTime"></param>
        /// <param name="millisecond">精度(毫秒)设置 true,则生成13位的时间戳;精度(秒)设置为 false,则生成10位的时间戳;默认为 true </param>
        /// <returns>返回对应的时间戳</returns>
        public static string ToTimestamp(this DateTime dateTime, bool millisecond = true)
        {
            return dateTime.ToTimestampLong(millisecond).ToString();
        }

        /// <summary>
        /// 转换指定时间得到对应的时间戳
        /// Add by 成长的小猪(Jason.Song) on 2019/05/07
        /// http://blog.csdn.net/jasonsong2008
        /// </summary>
        /// <param name="dateTime"></param>
        /// <param name="millisecond">精度(毫秒)设置 true,则生成13位的时间戳;精度(秒)设置为 false,则生成10位的时间戳;默认为 true </param>
        /// <returns>返回对应的时间戳</returns>
        public static long ToTimestampLong(this DateTime dateTime, bool millisecond = true)
        {
            var ts = dateTime.ToUniversalTime() - new DateTime(1970, 1, 1, 0, 0, 0, 0);
            return millisecond ? Convert.ToInt64(ts.TotalMilliseconds) : Convert.ToInt64(ts.TotalSeconds);
        }

        /// <summary>
        /// 转换指定时间戳到对应的时间
        /// Add by 成长的小猪(Jason.Song) on 2019/05/07
        /// http://blog.csdn.net/jasonsong2008
        /// </summary>
        /// <param name="timestamp">(10位或13位)时间戳</param>
        /// <returns>返回对应的时间</returns>
        public static DateTime ToDateTime(this string timestamp)
        {
            var tz = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1, 0, 0, 0, 0));
            return timestamp.Length == 13
                ? tz.AddMilliseconds(Convert.ToInt64(timestamp))
                : tz.AddSeconds(Convert.ToInt64(timestamp));
        }
    }
}

测试类:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace T_Test
{
    /// <summary>
    /// 使用方法
    /// Add by 成长的小猪(Jason.Song) on 2019/05/07
    /// http://blog.csdn.net/jasonsong2008
    /// </summary>
    
    public class TimeHelperTests
    {
        /// <summary>
        /// 测试方法
        /// Add by 成长的小猪(Jason.Song) on 2019/05/07
        /// http://blog.csdn.net/jasonsong2008
        /// </summary>
        
        public void GetCurrentTimestampTest()
        {
            //获取当前时间戳
            var current = TimeHelper.GetCurrentTimestamp();
            Console.WriteLine("获取当前时间戳"+current);

            //或者这样获取当前时间戳
            current = DateTime.Now.ToTimestamp();
            Console.WriteLine("或者这样获取当前时间戳"+current);

            //转换指定某个时间的时间戳
            var specified = Convert.ToDateTime("2019-05-07 16:00:00").ToTimestamp();
            Console.WriteLine("转换指定某个时间的时间戳"+specified);

            //将时间戳转换成DateTime
            var currentTime = current.ToDateTime();
            Console.WriteLine("将当前时间戳转换成DateTime"+currentTime);
            var specifiedTime = specified.ToDateTime();
            Console.WriteLine("将指定时间戳转换成DateTime"+specifiedTime);
        }
        /// <summary>
        /// 10位秒级的时间戳
        /// </summary>
        /// <param name="dt"></param>
        public long   GetTimeStamp(DateTime dt)
        {
            DateTime dateStart = new DateTime(1970, 1, 1, 8, 0, 0);
            long timeStamp = Convert.ToInt32((dt - dateStart).TotalSeconds);
            Console.WriteLine("10位秒级的时间戳:" + timeStamp);
            return timeStamp;
        }
 
    }
}

调用:

          #region  时间戳测试 
            TimeHelperTests t = new TimeHelperTests();
            t.GetCurrentTimestampTest();
            string time = "2020-07-07";
            t.GetTimeStamp(DateTime.Parse(time));
            #endregion

运行效果:

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你的美,让我痴迷

你的好,我会永远记住你的。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值