C#工具类之日期扩展类
2024-09-04 18:06:32
/// <summary>
/// DateTimeHelper
/// </summary>
public static class DateTimeHelper
{
/// <summary>
/// Unix时间起始时间
/// </summary>
public static readonly DateTime StarTime = new DateTime(, , ); /// <summary>
/// 常用日期格式
/// </summary>
public static readonly string CommonDateFormat = "yyyy-MM-dd HH:mm:ss.fff"; /// <summary>
/// 周未定义
/// </summary>
public static readonly DayOfWeek[] Weekend = { DayOfWeek.Saturday, DayOfWeek.Sunday }; /// <summary>
/// 获取从Unix起始时间到给定时间的毫秒数
/// </summary>
/// <param name="datetime"></param>
/// <returns></returns>
public static long GetMillisecondsSince1970(this DateTime datetime)
{
var ts = datetime.Subtract(StarTime);
return (long)ts.TotalMilliseconds;
} /// <summary>
/// 获取从Unix起始时间到给定时间的秒数
/// </summary>
/// <param name="datetime"></param>
/// <returns></returns>
public static long GetSecondsSince1970(this DateTime datetime)
{
var ts = datetime.Subtract(StarTime);
return (long)ts.TotalSeconds;
} /// <summary>
/// 明天
/// </summary>
/// <param name="date"></param>
/// <returns></returns>
public static DateTime Tomorrow(this DateTime date)
{
return date.AddDays();
} /// <summary>
/// 昨天
/// </summary>
/// <param name="date"></param>
/// <returns></returns>
public static DateTime Yesterday(this DateTime date)
{
return date.AddDays(-);
} /// <summary>
/// 常用日期格式化字符串
/// </summary>
/// <param name="date"></param>
/// <returns></returns>
public static string ToCommonFormat(this DateTime date)
{
return date.ToString(CommonDateFormat);
} /// <summary>
/// 是否是周未
/// </summary>
/// <param name="date"></param>
/// <returns></returns>
public static bool IsWeekend(this DateTime date)
{
return Weekend.Any(p => p == date.DayOfWeek);
} /// <summary>
/// 是否是工作日
/// </summary>
/// <param name="date"></param>
/// <returns></returns>
public static bool IsWeekDay(this DateTime date)
{
return !date.IsWeekend();
} /// <summary>
/// 给定月份的第1天
/// </summary>
/// <param name="date"></param>
/// <returns></returns>
public static DateTime GetFirstDayOfMonth(this DateTime date)
{
return new DateTime(date.Year, date.Month, );
} /// <summary>
/// 给定月份的最后1天
/// </summary>
/// <param name="date"></param>
/// <returns></returns>
public static DateTime GetLastDayOfMonth(this DateTime date)
{
return date.GetFirstDayOfMonth().AddMonths().AddDays(-);
} /// <summary>
/// 给定日期所在月份第1个星期几所对应的日期
/// </summary>
/// <param name="date">给定日期</param>
/// <param name="dayOfWeek">星期几</param>
/// <returns>所对应的日期</returns>
public static DateTime GetFirstWeekDayOfMonth(this DateTime date, DayOfWeek dayOfWeek)
{
var dt = date.GetFirstDayOfMonth();
while (dt.DayOfWeek != dayOfWeek)
dt = dt.AddDays(); return dt;
} /// <summary>
/// 给定日期所在月份最后1个星期几所对应的日期
/// </summary>
/// <param name="date">给定日期</param>
/// <param name="dayOfWeek">星期几</param>
/// <returns>所对应的日期</returns>
public static DateTime GetLastWeekDayOfMonth(this DateTime date, DayOfWeek dayOfWeek)
{
var dt = date.GetLastDayOfMonth();
while (dt.DayOfWeek != dayOfWeek)
dt = dt.AddDays(-); return dt;
} /// <summary>
/// 早于给定日期
/// </summary>
/// <param name="date"></param>
/// <param name="other"></param>
/// <returns></returns>
public static bool IsBefore(this DateTime date, DateTime other)
{
return date.CompareTo(other) < ;
} /// <summary>
/// 晚于给定日期
/// </summary>
/// <param name="date"></param>
/// <param name="other"></param>
/// <returns></returns>
public static bool IsAfter(this DateTime date, DateTime other)
{
return date.CompareTo(other) > ;
} /// <summary>
/// 给定日期最后一刻,精确到23:59:59.999
/// </summary>
/// <param name="date"></param>
/// <returns></returns>
public static DateTime EndTimeOfDay(this DateTime date)
{
return new DateTime(date.Year, date.Month, date.Day, , , , );
} /// <summary>
/// 给定日期开始一刻,精确到0:0:0.0
/// </summary>
/// <param name="date"></param>
/// <returns></returns>
public static DateTime StartTimeOfDay(this DateTime date)
{
return date.Date;
} /// <summary>
/// 给定日期的中午,精确到12:0:0.0
/// </summary>
/// <param name="date"></param>
/// <returns></returns>
public static DateTime NoonOfDay(this DateTime date)
{
return new DateTime(date.Year, date.Month, date.Day, , , );
} /// <summary>
/// 当前日期与给定日期是否是同一天
/// </summary>
/// <param name="date">当前日期</param>
/// <param name="dateToCompare">给定日期</param>
/// <returns></returns>
public static bool IsDateEqual(this DateTime date, DateTime dateToCompare)
{
return (date.Date == dateToCompare.Date);
} /// <summary>
/// 判断是否为今天
/// </summary>
/// <param name="date"></param>
/// <returns></returns>
public static bool IsToday(this DateTime date)
{
return (date.Date == DateTime.Now.Date);
} /// <summary>
/// 给定日期所在月份共有多少天
/// </summary>
/// <param name="date"></param>
/// <returns></returns>
public static int GetCountDaysOfMonth(this DateTime date)
{
return date.GetLastDayOfMonth().Day;
}
}
最新文章
- xml/map转换器,递归设计思路
- File Type Icons – 免费扁平设计风格文件类型图标集
- MVC项目实践,在三层架构下实现SportsStore-06,实现购物车
- C# 绘制统计图(柱状图, 折线图, 扇形图)
- java.util.ArrayList
- RHCE 基础学习
- yii2使用Gii生成代码
- 在VC中检测内存泄漏
- JQuery.ajax一解
- 新发现的Cyberduck(映射网盘)和zsuncloud(硬件产品很新潮),群辉nas的确好用(购买链接)
- HttpClient4.2 Fluent API学习
- GNU/Linux需要特别注意的目录
- 撸一个小型PHP框架
- English trip V2 - A 1. Fastival Teacher:Julia Key:
- for循环两个略骚的写法
- 覆盖的面积 HDU - 1255(扫描线求面积交)
- KVM上如何让虚拟机支持虚拟化(kvm虚拟化的嵌套)
- @property用法总结
- POJ3904 Sky Code
- 径向模糊(Radial Blur)
热门文章
- Linux 查看一个端口的连接数
- Synchronized关键字、Lock,并解释它们之间的区别
- 使用spring-loaded实现应用热部署
- 【总结整理】webGIS学习
- Codeforces 1107E (Vasya and Binary String) (记忆化,DP + DP)
- g2o20160430下的csparse文件夹内的CMakeLists.txt
- 高性能MySQL笔记-第5章Indexing for High Performance-003索引的作用
- 杭电ACM刷题(2):1005,Number Sequence 标签: 杭电acmC语言 2017-05-11 22:43 116人阅读
- android studio中使用recyclerview小白篇(一)
- c#继承、多重继承