zoukankan      html  css  js  c++  java
  • timeStamp(时间戳)

     什么是时间戳?

    首先要清楚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。

    JavaScript时间戳相互转换

    C# DateTime转换为JavaScript时间戳

    DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1, 0, 0, 0, 0));  // 当地时区
    DateTime localNow = DateTime.Now;
    long timeStamp = (long)((localNow - startTime).Ticks / 10000); // 相差毫秒数
    

      或者:

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

      

    JavaScript时间戳转换为C# DateTime

    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"));
    

      

    获取当前时间戳(取到毫秒得到的时间戳就是13位,只取到秒的话时间戳就是10位)

    第一种方法
    /// <summary>  
            /// 获取当前时间戳  
            /// </summary>  
            /// <param name="bflag">为真时获取10位时间戳,为假时获取13位时间戳.bool bflag = true</param>  
            /// <returns></returns>  
            public static string GetTimeStamp(bool bflag)
            {
                TimeSpan ts = DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0);
                string ret = string.Empty;
                if (bflag)
                    ret = Convert.ToInt64(ts.TotalSeconds).ToString();
                else
                    ret = Convert.ToInt64(ts.TotalMilliseconds).ToString();
    
                return ret;
            }
    

      

    一般一个项目中就会只用一种,要么10位要么13位,所以也可以直接用下面的代码

    public static long GetTimestamp()
            {
                TimeSpan ts = DateTime.Now.ToUniversalTime() - new DateTime(1970, 1, 1);//ToUniversalTime()转换为标准时区的时间,去掉的话直接就用北京时间
                return (long)ts.TotalMilliseconds; //精确到毫秒
                //return (long)ts.TotalSeconds;//获取10位
            }
    

      

    下面一种方式的唯一区别就在于是否需要获取异常,

    //生成unix格式时间
            public static long getUnix()
            {
                try
                {
                    TimeSpan timespan = DateTime.UtcNow - new DateTime(1970, 1, 1);
                    //return (long)timespan.TotalSeconds;//获取10位
                    return (long)timespan.TotalMilliseconds;
                }
                catch (Exception)
                {
                    return -1;
                }
            }
    

      

    了解更多可以:https://blog.csdn.net/weixin_39885282/article/details/79462443

  • 相关阅读:
    telnet模拟http訪问
    network: Android 网络推断(wifi、3G与其它)
    Cocos2d-x学习笔记(19)(TestCpp源代码分析-3)
    Thinkphp编辑器扩展类kindeditor用法
    逛自己的微博,回想以前的那个“我”
    微信生成二维码
    [C++]四种方式求解最大子序列求和问题
    Android 颜色渲染(二) 颜色区域划分原理与实现思路
    Android 颜色渲染(一) 颜色选择器 ColorPickerDialog剖析
    Android 图标上面添加提醒(二)使用开源UI类库 Viewbadger
  • 原文地址:https://www.cnblogs.com/mvpbest/p/13353535.html
Copyright © 2011-2022 走看看