/// <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. day70-oracle 12-Java调用存储过程和存储函数

    我们现在调用的是存储过程和存储函数.用CallableSatement调用存储函数和存储过程. RDBMS:关系数据库.使用标准方式调用存储过程.也就是说:在mysql中调用和在oracle中调用的写 ...

  2. 详解CSS float属性(转)

    详解CSS float属性   阅读目录 基础知识 float的详细细节 float特殊情况 clear属性 清除浮动 float的应用 总结 CSS中的float属性是一个频繁用到的属性,对于初学者 ...

  3. opencv3.2加载图片

    #include <opencv2/opencv.hpp>#include <iostream> using namespace cv;using namespace std; ...

  4. iOS 本地加载js文件

    #import "RootViewController.h" @interface RootViewController ()<UIWebViewDelegate> @ ...

  5. 数字图像处理实验(4):PROJECT 02-04 [Multiple Uses],Zooming and Shrinking Images by Bilinear Interpolation 标签: 图像处理MATLAB

    实验要求: Zooming and Shrinking Images by Bilinear Interpolation Objective To manipulate another techniq ...

  6. SPOJ GSS7 - Can you answer these queries VII

    板的不能再板,链剖+线段树或者是LCT随便维护. 感觉唯一要注意的是跳链的时候要对$x$向上跳和$y$向上跳的情况分开讨论,而不能直接$swap$,因为只有两段接触的端点才能相互合并,而且每一次向上跳 ...

  7. Jsp入门第一天

    1. JSP: 1). WHY: JSP 是简 Servlet 编写的一种技术, 它将 Java 代码和 HTML 语句混合在同一个文件中编写,只对网页中的要动态产生的内容采用 Java 代码来编写, ...

  8. C++面试笔记--面向对象

    说到面向对象,大家第一反应应该就是它的三大特性:封装性.继承性和多态性.那么我们先简单的了解一下这三大特性: (1)封装性:封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的 ...

  9. 并没有看起来那么简单leetcode Generate Parentheses

    问题解法参考 它给出了这个问题的探讨. 超时的代码: 这个当n等于7时,已经要很长时间出结果了.这个算法的复杂度是O(n^2). #include<iostream> #include&l ...

  10. delphi xe6 android ListView增加 Header或Footer 的方法

    var  Item1: TListViewItem;begin    Item1 := ListView1.Items.Add;    Item1.Purpose:=TListItemPurpose. ...