C#关于时间(获取特定格式的时间及多种⽅式获取当前时间戳)以及10位和13
位时间戳转为特定格式
⼀、获取当期时间并转为特定格式:
设置所需要的时间格式:
⼆、获取当前(取到毫秒得到的时间戳就是13位,只取到秒的话时间戳就是10位)string tradeTime = DateTime .Now.ToString ("yyyyMMddHHmmss", DateTimeFormatInfo .InvariantInfo );
1string tradeTime = DateTime .Now.ToString ("yyyy-MM-dd HH :mm :ss", DateTimeFormatInfo .InvariantInfo );
1string tradeTime = DateTime .Now.ToString ("yyyy 年MM ⽉dd ⽇ HH 时mm 分ss 秒", DateTimeFormatInfo .InvariantInfo );
1
2第⼀种⽅法/// <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;        }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
⼀般⼀个项⽬中就会只⽤⼀种,要么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位        }1
2
3
4
5
6
7//⽣成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;            }        }
1
2
3
4
unix时间戳转换日期格式5
6
7
8
9
10
11
12
13
14
运⾏结果:
看到结果会发现秒那块略有不同,⼤概是北京时间和标准时区的差别,有错误的地⽅请留⾔指正⼆、将10位和13位时间戳转为特定格式
为了测试这个转换是否正确,我先将当前时间转为Unix的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;            }        }        public  static  long  DateTimeToUnixTimestamp ()        {            var  start = new  DateTime(1970, 1, 1, 0, 0, 0, DateTime.Now.Kind);            return  Convert.ToInt64((DateTime.Now - start).TotalSeconds);        }        public  static  long  GetCurrentTimeUnix ()        {            TimeSpan cha = (DateTime.Now - TimeZone.CurrentTimeZone.ToLocalTime(new  System.DateTime(1970, 1, 1)));            long  t = (long )cha.TotalSeconds;            return  t;        }1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
运⾏结果:
下⾯⼀个demo是将10位的直接转为 格式的: private  static  string  unixTimeToTime (string  timeStamp)        {            DateTime dtStart = TimeZone.CurrentTimeZone.ToLocalTime(new  DateTime(1970, 1, 1));            long  lTime;            if  (timeStamp.Length.Equals(10))//判断是10位            {                lTime = long .Parse(timeStamp + "0000000");            }else            {                lTime = long .Parse(timeStamp + "0000");//13位            }            TimeSpan toNow = new  TimeSpan(lTime);            DateTime daTime = dtStart.Add(toNow);            string  time = daTime.ToString("yyyyMMddHHmmss");//转为了string 格式            return  time;        }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17private  static  DateTime GetTime (string  timeStamp)        {            DateTime dtStart = TimeZone.CurrentTimeZone.ToLocalTime(new  DateTime(1970, 1, 1));            long  lTime = long .Parse(timeStamp + "0000000");            TimeSpan toNow = new  TimeSpan(lTime);            return  dtStart.Add(toNow);        }1
2
3
4
5
6
7

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。