using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Utils
{
public static class DateHelper
{
#region 常用日期函数
///
/// 上月第一天
///
public static string PreMonthFirstDay
{
get { return DateTime.Now.AddDays(1 - DateTime.Now.Day).AddMonths(-1).ToString("yyyy-MM-dd"); }
}
///
/// 上月最后一天
///
public static string PreMonthLastDay
{
get { return DateTime.Now.AddDays(1 - DateTime.Now.Day).AddDays(-1).ToString("yyyy-MM-dd"); }
}
///
/// 上周一
///
public static string PreWeekMonday
{
get { return DateTime.Now.AddDays(1 - System.Convert.ToInt32(DateTime.Now.DayOfWeek.ToString("d"))).AddDays(-7).ToString("yyyy-MM-dd"); }
}
///
/// 上周日
///
public static string PreWeekSunday
{
get { return DateTime.Now.AddDays(1 - System.Convert.ToInt32(DateTime.Now.DayOfWeek.ToString("d"))).AddDays(-1).ToString("yyyy-MM-dd"); }
}
///
/// 昨天
///
public static string Yesterday
{
get { return DateTime.Now.Date.AddDays(-1).ToString("yyyy-MM-dd"); }
}
///
/// 今天
///
public static string Today
{
get { return DateTime.Now.ToString("yyyy-MM-dd"); }
}
///
/// 本周一
///
public static string ThisWeekMonday
{
get { return DateTime.Now.AddDays(1 - System.Convert.ToInt32(DateTime.Now.DayOfWeek.ToString("d"))).ToString("yyyy-MM-dd"); }
}
///
/// 本周日
///
public static string ThisWeekSunday
{
get { return DateTime.Now.AddDays(1 - System.Convert.ToInt32(DateTime.Now.DayOfWeek.ToString("d"))).AddDays(6).ToString("yyyy-MM-dd"); }
}
///
/// 本月第一天
///
public static string ThisMonthFirstDay
{
get { return DateTime.Now.AddDays(1 - DateTime.Now.Day).ToString("yyyy-MM-dd"); }
}
///
/// 本月最后一天
///
public static string ThisMonthLastDay
{
get { return DateTime.Now.AddDays(1 - DateTime.Now.Day).AddMonths(1).AddDays(-1).ToString("yyyy-MM-dd"); }
}
///
/// 长日期转换为yyyy-mm-dd形式显示
///
///
///
public static string ConvertDateToYYYYMMDD(object date)
{
if (date.IsNullOrEmpty())
{
return "";
}
return System.Convert.ToDateTime(date).ToString("yyyy-MM-dd");
}
#endregion
public static long DateDiff(DateInterval interval, DateTime date1, DateTime date2)
{
TimeSpan ts = date2 - date1;
switch (interval)
{
case DateInterval.Year:
return date2.Year - date1.Year;
case DateInterval.Month:
return (date2.Month - date1.Month) + (12 * (date2.Year - date1.Year));
case DateInterval.Weekday:
return Fix(ts.TotalDays) / 7;
case DateInterval.Day:
return Fix(ts.TotalDays);
case DateInterval.Hour:
return Fix(ts.TotalHours);
case DateInterval.Minute:
return Fix(ts.TotalMinutes);
default:
return Fix(ts.TotalSeconds);
}
}
private static long Fix(double number)
{
if (number >= 0)
{
return (long)Math.Floor(number);
}
return (long)Math.Ceiling(number);
}
}
public enum DateInterval
{
Year,
Month,
Weekday,
Day,
Hour,
Minute,
Second
}
}