C# 日期時間處理函式
阿新 • • 發佈:2019-02-08
# region 日期時間處理邏輯 // 將n轉化為2位符號數, 0-99 轉化為00-99 public static string TwoChar(int n) { return (n < 10 ? "0" : "") + n; } // 獲取DateTime的日期部分:2005-06-07 public static string getDate(DateTime T) { return T.Year + "-" + TwoChar(T.Month) + "-" + TwoChar(T.Day); } // 獲取DateTime的時間部分:12:23:34 public static string getTime(DateTime T) { return TwoChar(T.Hour) + ":" + TwoChar(T.Minute) + ":" + TwoChar(T.Second); } // 將DateTime日期轉化為固定的日期格式: 2005-06-07 12:23:34 public static string ToString(DateTime T) { return getDate(T) + " " + getTime(T); //DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss"); } // 獲取當前時間如: 2005-06-07 12:23:34 public static string TimeNow() { return ToString(DateTime.Now); } // 獲取相對於當前時間,days天后的日期,獲取date = "2005-6-7 12:23:34" public static string TimeNowAdd(int days) { DateTime Now = DateTime.Now; Now = Now.AddDays(days); string Time = ToString(Now); return Time; // "2016-5-26 12:23:34" } // 根據當前日期獲取 格式20160101型別的日期 public static string DateString() { return getDate(DateTime.Now).Replace("-", ""); } // DateTime.Compare(time1, time2); // 從字串獲取日期 //string mytime = "2005-6-7 12:23:34"; public static DateTime parseDate(string date) { //IFormatProvider culture = new System.Globalization.CultureInfo("zh-CN", true); //string[] expectedFormats = { "yyyy-MM-dd HH:mm:ss", "yyyy-MM-d HH:mm:ss", "yyyy-M-dd HH:mm:ss", "yyyy-M-dd HH:mm:ss" }; //DateTime dateTime = DateTime.ParseExact(date, expectedFormats, culture, System.Globalization.DateTimeStyles.AllowInnerWhite); DateTime dateTime = DateTime.Parse(date); return dateTime; } // 對兩個字串日期進行比較 public static int Date_cmp(string str1, string str2) { //DateTime date1 = Tool.parseDate("2005-6-07 12:23:34"); //DateTime date2 = Tool.parseDate("2005-07-07 12:23:34"); //return -1 if (str2.Equals("0000-00-00 00:00:00")) return 1; DateTime date1 = Tool.parseDate(str1); DateTime date2 = Tool.parseDate(str2); return DateTime.Compare(date1, date2); } // 判定日期date是否在[date1到date2]之間,是返回true; public static bool DateInRegion(string date, string date1, string date2) { return (Date_cmp(date, date1) >= 0) && (Date_cmp(date, date2) <= 0); } // 判定日期date是否在(date1+minute到date1+minute+second]之間,是返回true; public static bool DateInRegion(string date, string date1, int minute, int second) { DateTime D = parseDate(date1).AddMinutes(minute); string d1 = ToString(D); string d2 = ToString(D.AddSeconds(second)); return DateInRegion(date, d1, d2); } // 對兩個日期date1和date2進行比較 // date1 = 2016-05-27 date2 = 2016-05-29 public static long Shortdate_cmp(string date1, string date2) { long d1 = long.Parse(date1.Replace("-", "").Replace("/", "")); long d2 = long.Parse(date2.Replace("-", "").Replace("/", "")); return d1 - d2; } // 獲取兩個日期之間的分鐘差值 public static long Sub_minite(string str1, string str2) { DateTime date1 = Tool.parseDate(str1); DateTime date2 = Tool.parseDate(str2); return (date1.Ticks - date2.Ticks) / 10000 / 1000 / 60; } // 獲取某個日期的對應的毫秒值 public static long ms(DateTime time) { return time.Ticks / 10000; } // 以日為週期,獲取date = "2005-6-7 12:23:34" 對應今日時間 public static string toTodayTime(string date) { DateTime D = parseDate(date); // 轉化date為日期 string D_day = getDate(D); // 獲取日期 "2005-06-07" string T_day = getDate(DateTime.Now); // 今日日期 "2016-05-23" string todayTime = ToString(D).Replace(D_day, T_day); return todayTime; // "2016-5-23 12:23:34" } // 以周為週期,獲取date = "2005-6-7 12:23:34" 對應的本週日期時間 public static string toThisWeekTime(string date) { DateTime D = parseDate(date); // 轉化date為日期 string T1_day = getDate(D); DayOfWeek DayOfWeek1 = D.DayOfWeek; // 獲取日期為星期幾 DateTime Now = DateTime.Now; DayOfWeek DayOfWeek2 = Now.DayOfWeek; // 當前為星期幾 Now = Now.AddDays(DayOfWeek1 - DayOfWeek2); string T2_day = getDate(Now); // 獲取D_day的本週日期 "2016/5/24" string weekTime = ToString(D).Replace(T1_day, T2_day); return weekTime; // "2016-5-26 12:23:34" } // 以月為週期,獲取date = "2016-04-07 12:23:34" 對應的本月日期時間 public static string toThisMonthTime(string date) { DateTime D = parseDate(date); // 轉化date為日期 string T1_day = getDate(D); float days1 = DateTime.DaysInMonth(D.Year, D.Month); // 獲取日期對應月份的總天數 DateTime Now = DateTime.Now; float days2 = DateTime.DaysInMonth(Now.Year, Now.Month); // 獲取本月的總天數 int day = FloatToInt(D.Day * days2 / days1); // 按總天數比例轉化為本月對應的某天 string T2_day = Now.Year + "-" + Now.Month + "-" + day; // 獲取D_day的本月日期 "2016-05-23" string monthTime = ToString(D).Replace(T1_day, T2_day); return monthTime; // "2016-5-7 12:23:34" } // 浮點型,按四捨五入轉化為整數 public static int FloatToInt(float n) { int m = (int)n; return n-m<0.5f ? m : m + 1; } #endregion