using System; using System.Collections.Generic; using System.Text; namespace Mini.Common { public static class DateTimeTool { /// /// 获取指定日期所在周的第一天,星期天为第一天 /// /// /// public static DateTime GetDateTimeWeekFirstDaySun(DateTime dateTime) { DateTime firstWeekDay = DateTime.Now; try { //得到是星期几,然后从当前日期减去相应天数 int weeknow = Convert.ToInt32(dateTime.DayOfWeek); int daydiff = (-1) * weeknow; firstWeekDay = dateTime.AddDays(daydiff); } catch { } return firstWeekDay; } /// /// 获取指定日期所在周的第一天,星期一为第一天 /// /// /// public static DateTime GetDateTimeWeekFirstDayMon(DateTime dateTime) { DateTime firstWeekDay = DateTime.Now; try { int weeknow = Convert.ToInt32(dateTime.DayOfWeek); //星期一为第一天,weeknow等于0时,要向前推6天。 weeknow = (weeknow == 0 ? (7 - 1) : (weeknow - 1)); int daydiff = (-1) * weeknow; firstWeekDay = dateTime.AddDays(daydiff); } catch { } return firstWeekDay; } /// /// 获取指定日期所在周的最后一天,星期六为最后一天 /// /// /// public static DateTime GetDateTimeWeekLastDaySat(DateTime dateTime) { DateTime lastWeekDay = DateTime.Now; try { int weeknow = Convert.ToInt32(dateTime.DayOfWeek); int daydiff = (7 - weeknow) - 1; lastWeekDay = dateTime.AddDays(daydiff); } catch { } return lastWeekDay; } /// /// 获取指定日期所在周的最后一天,星期天为最后一天 /// /// /// public static DateTime GetDateTimeWeekLastDaySun(DateTime dateTime) { DateTime lastWeekDay = DateTime.Now; try { int weeknow = Convert.ToInt32(dateTime.DayOfWeek); weeknow = (weeknow == 0 ? 7 : weeknow); int daydiff = (7 - weeknow); lastWeekDay = dateTime.AddDays(daydiff); } catch { } return lastWeekDay; } /// /// 获取指定日期的月份第一天 /// /// /// public static DateTime GetDateTimeMonthFirstDay(DateTime dateTime) { if (dateTime == null) { dateTime = DateTime.Now; } return new DateTime(dateTime.Year, dateTime.Month, 1); } /// /// 获取指定月份最后一天 /// /// /// public static DateTime GetDateTimeMonthLastDay(DateTime dateTime) { int day = DateTime.DaysInMonth(dateTime.Year, dateTime.Month); return new DateTime(dateTime.Year, dateTime.Month, day); } /// /// 时间戳转为C#格式时间 /// /// /// public static DateTime GetTimeFromLinuxTime(long timeStamp) { System.DateTime dtDateTime = new DateTime(1970, 1, 1, 0, 0, 0, 0); dtDateTime = dtDateTime.AddMilliseconds(timeStamp).ToLocalTime(); return dtDateTime; } /// /// 时间戳转为C#格式时间 /// /// /// public static DateTime GetTimeFromLinuxShortTime(long timeStamp) { DateTime dtStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1)); long lTime = long.Parse(timeStamp.ToString() + "0000000"); TimeSpan toNow = new TimeSpan(lTime); return dtStart.Add(toNow); } /// /// DateTime时间格式转换为Unix时间戳格式 /// /// /// public static int ConvertDateTimeInt(System.DateTime time) { System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1)); return (int)(time - startTime).TotalSeconds; } } }