C#關於時間(獲取特定格式的時間及多種方式獲取當前時間戳)以及10位和13位時間戳轉爲特定格式

C#關於時間(獲取特定格式的時間及多種方式獲取當前時間戳)以及10位和13位時間戳轉爲特定格式

 版權聲明:本文爲博主原創文章,未經博主容許不得轉載,轉載請註明出處。 https://blog.csdn.net/weixin_39885282/article/details/79462443

1、獲取當期時間並轉爲特定格式:markdown

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

這裏寫圖片描述

設置所須要的時間格式:post

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

這裏寫圖片描述

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

這裏寫圖片描述

2、獲取當前時間戳(取到毫秒獲得的時間戳就是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; }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

這裏寫圖片描述

通常一個項目中就會只用一種,要麼10位要麼13位,因此也能夠直接用下面的代碼spa

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

下面一種方式的惟一區別就在因而否須要獲取異常,.net

//生成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

前四種完整方法及運行結果3d

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

運行結果: 
這裏寫圖片描述 
看到結果會發現秒那塊略有不一樣,大概是北京時間和標準時區的差異,有錯誤的地方請留言指正unix

2、將10位和13位時間戳轉爲特定格式 
爲了測試這個轉換是否正確,我先將當前時間轉爲Unix的10位和13位格式,而後再轉回來: 
獲取當前時間戳就是上面的方法; 
時間轉換:code

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

運行結果: 
這裏寫圖片描述orm

下面一個demo是將10位的直接轉爲DateTime 格式的:xml

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); }
相關文章
相關標籤/搜索