/// <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;
}
}

C#工具类之日期扩展类的更多相关文章

  1. [Django REST framework - 视图组件之视图基类、视图扩展类、视图子类、视图集]

    [Django REST framework - 视图组件之视图基类.视图扩展类.视图子类.视图集] 视图继承关系 详图见文章末尾 视图组件可点我查看 两个视图基类:APIView.GenericAP ...

  2. 日期类时间类,日期时间类,单例模式,装箱与拆箱,数字类随机数,BigDecimal总结

    1.日期类,时间类,日期时间类 初步日期使用方法及格式转换方法(旧方法): 格式://Mon Jul 30 11:26:05 CST 2018             年月日时分秒    CST代表北 ...

  3. java基础22 日期类、日历类、日期格式类

    package com.dhb.code; import java.text.ParseException; import java.text.SimpleDateFormat; import jav ...

  4. Java的日期类和日期格式化类

    日期类: Date date = new Date(); // 获取当前的系统时间 2 System.out.println("年份:"+ date.getYear()); Cal ...

  5. day15--Java常用类之日期相关类

    Java常用类 3.日期相关类 3.1Date类 在标准Java类库中包含一个Date类,它的对象表示一个特定的瞬间,精确到毫秒.在网上商城下单时,在对报销单进行审核时,都需要获取当前的时间,通过Da ...

  6. NSDate时间类/NSDateFormatter日期格式类

    #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { // NSDate 时间类 继承自N ...

  7. Object类、日期时间类、system类及StringBuilder字符串容器

    一.Object类常用API 1.1 概述 java.lang.Object类是Java语言中的根类,即所有类的父类.Object类中描述的所有方法子类都可以使用.在对象实例化的时候,最终找的父类就是 ...

  8. java_Object类、日期时间类、System类、包装类

    Object类 java.lang.Object 类是所有类的父类.它描述的所有方法子类都可以使用.在对象实例化的时候,最终找的父类就是Object. 如果一个类没有特别指定父类, 那么默认则继承自O ...

  9. C#工具类之素数扩展类

    /// <summary> /// 素数帮忙类 /// 本类是从.net源码 类 internal static class HashHelpers 类里抽取相应的代码 /// https ...

随机推荐

  1. 安装完Ubuntu 14.04后的几件事

    周末折腾一下Ubuntu 14.04,稍作记录: 1. 切换源,我还是钟情163的(ps, 这里如果用的以前13.04时候163的源会有问题,记得配置最新的http://mirrors.163.com ...

  2. Express响应方法

    下表中响应对象(res)的方法向客户端返回响应,终结请求响应的循环.如果在路由句柄中一个方法也不调用,来自客户端的请求会一直挂起. 方法 描述 res.download() 提示下载文件. res.e ...

  3. 生产者与消费者-1:N-基于list

    一个生产者/多个消费者: /** * 生产者 */ public class P { private MyStack stack; public P(MyStack stack) { this.sta ...

  4. JOptionPane如何自定义按钮绑定事件

    JOptionPane如何自定义按钮绑定事件 2018年01月29日 19:27:10 阅读数:475 摘自:https://blog.csdn.net/m0_37355951/article/det ...

  5. Inheritance with EF Code First: Part 2 – Table per Type (TPT)

    In the previous blog post you saw that there are three different approaches to representing an inher ...

  6. Html.DropDownListFor 练习

    需要创建一个List<SelectListItem>数据集,如下 使用已经存在FruitCategoryEntity.cs类的IEnumerable<FruitCategory> ...

  7. c语言中的const的作用及解析

    有时候我们希望定义这样一种变量,它的值不能被改变,在整个作用域中都保持固定.例如,用一个变量来表示班级的最大人数,或者表示缓冲区的大小.为了满足这一要求,可以使用const关键字对变量加以限定: co ...

  8. 开发一个属于自己的第一个Composer/Packagist包

    Composer 给我们带来了诸多的好处: 模块化,降低代码重用成本 统一的第三方代码组织方式 更科学的版本更新 初始化项目,生成composer.json文件 初始实例项目代码目录结构: 现在要在项 ...

  9. 「美团 CodeM 初赛 Round A」最长树链

    题目描述 Mr. Walker 最近在研究树,尤其是最长树链问题.现在树中的每个点都有一个值,他想在树中找出最长的链,使得这条链上对应点的值的最大公约数不等于1.请求出这条最长的树链的长度. 输入格式 ...

  10. Django会话,用户和注册之cookie

    HTTP状态和TCP不一样,HTTP是无状态的,也就是这一次请求和下一次请求之间没有任何状态保持,我们无法根据请求例如IP来识别是否在同一人的连续性请求.就像我们在访问网站的时候,输入了用户名和密码, ...