c# php 时间戳,C#关于时间(获取特定格式的时间及多种方式获取当前时间戳)以及10位和13位时间戳转为特定格式...

一、获取当期时间并转为特定格式:

string tradeTime = DateTime.Now.ToString("yyyyMMddHHmmss", DateTimeFormatInfo.InvariantInfo);

1

a95f0a575f2455c1ec46a0b6ff86b5fc.png

设置所需要的时间格式:

string tradeTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss", DateTimeFormatInfo.InvariantInfo);

1

8d74682d58fa8a067d335d6753441ad9.png

string tradeTime = DateTime.Now.ToString("yyyy年MM月dd日 HH时mm分ss秒", DateTimeFormatInfo.InvariantInfo);

1

2

1b11fc526938cd3be7128ccbb1ab1404.png

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

第一种方法

///

/// 获取当前时间戳 /// /// 为真时获取10位时间戳,为假时获取13位时间戳.bool bflag = true /// 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

6bcdd1f5c64c2b1a65a69690194fdabc.png

一般一个项目中就会只用一种,要么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

5

6

7

8

9

10

11

12

13

14

前四种完整方法及运行结果

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

运行结果:

134987b2915f330f06f27b44d1f5dc54.png 

看到结果会发现秒那块略有不同,大概是北京时间和标准时区的差别,有错误的地方请留言指正

二、将10位和13位时间戳转为特定格式

为了测试这个转换是否正确,我先将当前时间转为Unix的10位和13位格式,然后再转回来:

获取当前时间戳就是上面的方法;

时间转换:

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

17

运行结果:

73872e66c70095aac54f28b3172706d4.png

下面一个demo是将10位的直接转为DateTime 格式的:

private 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); }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值