分享一个C#日期时间静态扩展类,DateTimeExtensions 静态扩展:http://datetimeextensions.codeplex.com/
其中中包含了如指定日期当月的第一天,最后一天
DayExtensions.cs
using System;
namespace DateTimeExtensions
{
public static class DayExtensions
{
/// <summary>
/// Gets a DateTime representing the first day in the current month
/// </summary>
/// <param name="current">The current date</param>
/// <returns></returns>
public static DateTime First(this DateTime current)
{
DateTime first = current.AddDays(1 - current.Day);
return first;
}
/// <summary>
/// Gets a DateTime representing the first specified day in the current month
/// </summary>
/// <param name="current">The current day</param>
/// <param name="dayOfWeek">The current day of week</param>
/// <returns></returns>
public static DateTime First(this DateTime current, DayOfWeek dayOfWeek)
{
DateTime first = current.First();
if (first.DayOfWeek != dayOfWeek)
{
first = first.Next(dayOfWeek);
}
return first;
}
/// <summary>
/// Gets a DateTime representing the last day in the current month
/// </summary>
/// <param name="current">The current date</param>
/// <returns></returns>
public static DateTime Last(this DateTime current)
{
int daysInMonth = DateTime.DaysInMonth(current.Year, current.Month);
DateTime last = current.First().AddDays(daysInMonth - 1);
return last;
}
/// <summary>
/// Gets a DateTime representing the last specified day in the current month
/// </summary>
/// <param name="current">The current date</param>
/// <param name="dayOfWeek">The current day of week</param>
/// <returns></returns>
public static DateTime Last(this DateTime current, DayOfWeek dayOfWeek)
{
DateTime last = current.Last();
last = last.AddDays(Math.Abs(dayOfWeek - last.DayOfWeek) * -1);
return last;
}
/// <summary>
/// Gets a DateTime representing the first date following the current date which falls on the given day of the week
/// </summary>
/// <param name="current">The current date</param>
/// <param name="dayOfWeek">The day of week for the next date to get</param>
public static DateTime Next(this DateTime current, DayOfWeek dayOfWeek)
{
int offsetDays = dayOfWeek - current.DayOfWeek;
if (offsetDays <= 0)
{
offsetDays += 7;
}
DateTime result = current.AddDays(offsetDays);
return result;
}
}
}
TimeExtensions.cs
using System;
namespace DateTimeExtensions
{
public static class TimeExtensions
{ /// <summary>
/// Gets a DateTime representing midnight on the current date
/// </summary>
/// <param name="current">The current date</param>
public static DateTime Midnight(this DateTime current)
{
DateTime midnight = new DateTime(current.Year, current.Month, current.Day);
return midnight;
}
/// <summary>
/// Gets a DateTime representing noon on the current date
/// </summary>
/// <param name="current">The current date</param>
public static DateTime Noon(this DateTime current)
{
DateTime noon = new DateTime(current.Year, current.Month, current.Day, 12, 0, 0);
return noon;
}
/// <summary>
/// Sets the time of the current date with minute precision
/// </summary>
/// <param name="current">The current date</param>
/// <param name="hour">The hour</param>
/// <param name="minute">The minute</param>
public static DateTime SetTime(this DateTime current, int hour, int minute)
{
return SetTime(current, hour, minute, 0, 0);
}
/// <summary>
/// Sets the time of the current date with second precision
/// </summary>
/// <param name="current">The current date</param>
/// <param name="hour">The hour</param>
/// <param name="minute">The minute</param>
/// <param name="second">The second</param>
/// <returns></returns>
public static DateTime SetTime(this DateTime current, int hour, int minute, int second)
{
return SetTime(current, hour, minute, second, 0);
}
/// <summary>
/// Sets the time of the current date with millisecond precision
/// </summary>
/// <param name="current">The current date</param>
/// <param name="hour">The hour</param>
/// <param name="minute">The minute</param>
/// <param name="second">The second</param>
/// <param name="millisecond">The millisecond</param>
/// <returns></returns>
public static DateTime SetTime(this DateTime current, int hour, int minute, int second, int millisecond)
{
DateTime atTime = new DateTime(current.Year, current.Month, current.Day, hour, minute, second, millisecond);
return atTime;
}
}
}
使用示例:
DateTime firstDayOfMonth = DateTime.Now.First();
DateTime lastdayOfMonth = DateTime.Now.Last();
DateTime lastFridayInMonth = DateTime.Now.Last(DayOfWeek.Friday);
DateTime nextFriday = DateTime.Now.Next(DayOfWeek.Friday);
DateTime lunchTime = DateTime.Now.SetTime(11, 30);
DateTime noonOnFriday = DateTime.Now.Next(DayOfWeek.Friday).Noon();
版权声明:本作品系原创,版权归码友网所有,如未经许可,禁止任何形式转载,违者必究。
发表评论
登录用户才能发表评论, 请 登 录 或者 注册