using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace InterfaceBll { public class DatetimeHelper { /// <summary> /// 得到本周第一天(以星期一为第一天) /// </summary> /// <param name="datetime"></param> /// <returns></returns> public static DateTime GetWeekFirstDayMon(DateTime datetime) { //星期一为第一天 int weeknow = Convert.ToInt32(datetime.DayOfWeek); //因为是以星期一为第一天,所以要判断weeknow等于0时,要向前推6天。 weeknow = (weeknow == 0 ? (7 - 1) : (weeknow - 1)); int daydiff = (-1) * weeknow; //本周第一天 string firstDay = datetime.AddDays(daydiff).ToString("yyyy-MM-dd"); return Convert.ToDateTime(firstDay); } /// <summary> /// 得到本周最后一天(以星期天为最后一天) /// </summary> /// <param name="datetime"></param> /// <returns></returns> public static DateTime GetWeekLastDaySun(DateTime datetime) { //星期天为最后一天 int weeknow = Convert.ToInt32(datetime.DayOfWeek); weeknow = (weeknow == 0 ? 7 : weeknow); int daydiff = (7 - weeknow); //本周最后一天 string lastDay = datetime.AddDays(daydiff).ToString("yyyy-MM-dd"); return Convert.ToDateTime(lastDay); } /// <summary> /// 获得季度值。 /// </summary> /// <param name="month">月份</param> /// <returns></returns> public static int GetSeason(int month) { if (month < 4) return 1; else if (month >= 4 && month < 7) return 2; else if (month >= 7 && month < 10) return 3; else return 4; } /// <summary> /// 获得季度名称。 /// </summary> /// <param name="month">月份</param> /// <returns></returns> public static string GetSeasonName(int month) { if (month < 4) return "一季度"; else if (month >= 4 && month < 7) return "二季度"; else if (month >= 7 && month < 10) return "三季度"; else return "四季度"; } /// <summary> /// 根据月份获取本月分所在季节的首月及末月 /// </summary> /// <param name="month">当前月份</param> /// <param name="bMonth">首月</param> /// <param name="eMonth">末月</param> /// <returns>当前月份所属的季度</returns> public static string GetSeasonMonth(string month, ref string bMonth, ref string eMonth) { string season = ""; switch (month) { case "01": case "02": case "03": bMonth = "01"; eMonth = "03"; season = "1"; break; case "04": case "05": case "06": bMonth = "04"; eMonth = "06"; season = "2"; break; case "07": case "08": case "09": bMonth = "07"; eMonth = "09"; season = "3"; break; case "10": case "11": case "12": bMonth = "10"; eMonth = "12"; season = "4"; break; default: break; } return season; } /// <summary> /// 获取该年中是第几周 /// </summary> /// <param name="day">日期</param> /// <returns></returns> public static int WeekOfYear(DateTime day) { int weeknum; DateTime fDt = DateTime.Parse(day.Year.ToString() + "-01-01"); int k = Convert.ToInt32(fDt.DayOfWeek);//得到该年的第一天是周几 if (k == 0) { k = 7; } int l = Convert.ToInt32(day.DayOfYear);//得到当天是该年的第几天 l = l - (7 - k + 1); if (l <= 0) { weeknum = 1; } else { if (l % 7 == 0) { weeknum = l / 7 + 1; } else { weeknum = l / 7 + 2;//不能整除的时候要加上前面的一周和后面的一周 } } return weeknum; } /// <summary> /// 取得年唯一名称 /// </summary> /// <param name="year"></param> /// <returns></returns> public static string GetYearUniqueName(int year) { return string.Format("[时间].[年月日].[年].&[{0}]", year); } /// <summary> /// 取得季唯一名称 /// </summary> /// <param name="year"></param> /// <param name="month"></param> /// <returns></returns> public static string GetQuarterUniqueName(int year, int month) { string quarter = GetSeason(month).ToString().PadLeft(2, '0'); return string.Format("[时间].[年月日].[季度].&[{0}]&[{0}{1}]", year, quarter); } /// <summary> /// 取得月唯一名称 /// </summary> /// <param name="year"></param> /// <param name="month"></param> /// <returns></returns> public static string GetMonthUniqueName(int year, int month) { string quarter = GetSeason(month).ToString().PadLeft(2, '0'); string mon = month.ToString().PadLeft(2, '0'); return string.Format("[时间].[年月日].[月].&[{0}]&[{0}{1}]&[{0}{2}]", year, quarter, mon); } /// <summary> /// 取得年唯一名称 /// </summary> /// <param name="year"></param> /// <returns></returns> public static string GetYearUniqueName(string year) { return string.Format("[发生时间].[年季月].[年].&[{0}]", year); } /// <summary> /// 取得季唯一名称 /// </summary> /// <param name="year"></param> /// <param name="month"></param> /// <returns></returns> public static string GetQuarterUniqueName(string year, string month) { string quarter = GetSeason(int.Parse(month)).ToString().PadLeft(2, '0'); return string.Format("[发生时间].[年季月].[季].&[{0}]", year + quarter); } /// <summary> /// 取得月唯一名称 /// </summary> /// <param name="year"></param> /// <param name="month"></param> /// <returns></returns> public static string GetMonthUniqueName(string yearMonth) { return string.Format("[发生时间].[年季月].[月].&[{0}]", yearMonth); } /// <summary> /// 取得年唯一名称 /// </summary> /// <param name="name">维度名称</param> /// <param name="year">年</param> /// <returns></returns> public static string GetYearUniqueName(string name, string year) { return string.Format("[{1}].[年季月].[年].&[{0}]", year, name); } /// <summary> /// 取得季唯一名称 /// </summary> /// <param name="year"></param> /// <param name="name">维度名称</param> /// <param name="month"></param> /// <returns></returns> public static string GetQuarterUniqueName(string name, string year, string month) { string quarter = GetSeason(int.Parse(month)).ToString().PadLeft(2, '0'); return string.Format("[{1}].[年季月].[季].&[{0}]", year + quarter, name); } /// <summary> /// 取得月唯一名称 /// </summary> /// <param name="name">维度名称</param> /// <param name="year"></param> /// <param name="month"></param> /// <returns></returns> public static string GetMonthUniqueName(string name, string yearMonth) { return string.Format("[{1}].[年季月].[月].&[{0}]", yearMonth, name); } } }