/// <summary> /// 使用TimeSpan計算兩個時間差 /// </summary> /// <param name="DateTime1"></param> /// <param name="DateTime2"></param> /// <returns>Subtract:從中減去另一個TimeSpan值</returns> private string DateDiff(DateTime DateTime1, DateTime DateTime2) { string dateDiff = null; TimeSpan ts = DateTime1.Subtract(DateTime2).Duration(); dateDiff = ts.Days.ToString() + "天" + ts.Hours.ToString() + "小時" + ts.Minutes.ToString() + "分鍾" + ts.Seconds.ToString() + "秒"; return dateDiff; } /// <summary> /// // 計算字符串的 MD5 哈希值,並將該哈希作為 32 字符的十六進制格式字符串返回 /// </summary> /// <param name="inputStr"></param> /// <returns>常用於用戶注冊</returns> public string ToMD5Hash(string inputStr) { // 創建一個MD5CryptoServiceProvider對象的新實例 MD5 newMd5 = new MD5CryptoServiceProvider(); // 將輸入的字符串轉換為一個字節數組並計算哈希值。 byte[] sourceBit = Encoding.Default.GetBytes(inputStr); byte[] dataBit = newMd5.ComputeHash(sourceBit); string directStr = BitConverter.ToString(dataBit).Replace("-", ""); return directStr; } /// <summary> /// // 驗證輸入字符串經MD5轉換后,是否等同於一個哈希值 /// </summary> /// <param name="inputStr"></param> /// <param name="hash"></param> /// <returns>常用於用戶登錄</returns> public bool VerifyMd5Hash(string inputStr, string hash) { // 將輸入字符串MD5加密 string hashOfInput = ToMD5Hash(inputStr); // 創建一個StringComparer實例來比較兩個哈希值 // StringComparer.OrdinalIgnoreCase:獲取 StringComparer 對象 // 該對象執行不區分大小寫的序號字符串比較。 StringComparer comparer = StringComparer.OrdinalIgnoreCase; return comparer.Compare(hashOfInput, hash) == 0; } /// <summary> /// 生成年月日時分秒時間流水號格式 /// </summary> /// <param name="now"></param> /// <returns></returns> public static string SerialNumber(DateTime now) { int year = now.Year; int Month = now.Month;//月部分 int Day = now.Day;//月中的第幾天 int Hour = now.Hour;//時 int Minute = now.Minute;//分 int Second = now.Second; //秒 return year.ToString("0000") + Month.ToString("00") + Day.ToString("00") + Hour.ToString("00") + Minute.ToString("00") + Second.ToString("00"); } /// <summary> /// 根據號以及年月日時分秒生成訂單編號 /// </summary> /// <param name="now"></param> /// <param name="berthCode"></param> /// <returns></returns> public static string SerialNumber(DateTime now, string Code) { int year = now.Year; int Month = now.Month;//月部分 int Day = now.Day;//月中的第幾天 int Hour = now.Hour;//時 int Minute = now.Minute;//分 int Second = now.Second; //秒 return Code + year.ToString("0000") + Month.ToString("00") + Day.ToString("00") + Hour.ToString("00") + Minute.ToString("00") + Second.ToString("00"); } /// <summary> /// 傳過來的DateTime時間格式轉換為Unix時間戳格式 /// </summary> /// <param name="s"></param> /// <returns></returns> public static string ConventDateTimeInt(string time) { System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1, 0, 0, 0, 0)); //截取時間轉換為標准時間格式 string str = time.Substring(0, 4) + "-" + time.Substring(4, 2) + "-" + time.Substring(6, 2) + " " + time.Substring(8, 2) + ":" + time.Substring(10, 2) + ":" + time.Substring(12, 2); DateTime nowTime = Convert.ToDateTime(str); long unixTime = (long)Math.Round((nowTime - startTime).TotalMilliseconds / 1000, MidpointRounding.AwayFromZero) * 1000; return unixTime.ToString(); } /// <summary> /// Unix時間戳轉換為DateTime類型時間 /// </summary> /// <param name="d"></param> /// <returns></returns> public static System.DateTime ConvertIntDateTime(double d) { System.DateTime time = System.DateTime.MinValue; System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1)); time = startTime.AddMilliseconds(d); return time; } /// <summary> /// 時間差 /// </summary> /// <param name="now"></param> /// <returns></returns> public static int DateTimeSubtract(DateTime now) { TimeSpan time = DateTime.Now.Subtract(now); int hours = time.Hours;//獲取小時 int Minutes = time.Minutes;//獲取分鍾 int Seconds = time.Seconds;//獲取秒數 return hours * 60 * 60 + Minutes * 60 + Seconds; }