C#工具类之日期扩展类
/// <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#工具类之日期扩展类的更多相关文章
- [Django REST framework - 视图组件之视图基类、视图扩展类、视图子类、视图集]
[Django REST framework - 视图组件之视图基类.视图扩展类.视图子类.视图集] 视图继承关系 详图见文章末尾 视图组件可点我查看 两个视图基类:APIView.GenericAP ...
- 日期类时间类,日期时间类,单例模式,装箱与拆箱,数字类随机数,BigDecimal总结
1.日期类,时间类,日期时间类 初步日期使用方法及格式转换方法(旧方法): 格式://Mon Jul 30 11:26:05 CST 2018 年月日时分秒 CST代表北 ...
- java基础22 日期类、日历类、日期格式类
package com.dhb.code; import java.text.ParseException; import java.text.SimpleDateFormat; import jav ...
- Java的日期类和日期格式化类
日期类: Date date = new Date(); // 获取当前的系统时间 2 System.out.println("年份:"+ date.getYear()); Cal ...
- day15--Java常用类之日期相关类
Java常用类 3.日期相关类 3.1Date类 在标准Java类库中包含一个Date类,它的对象表示一个特定的瞬间,精确到毫秒.在网上商城下单时,在对报销单进行审核时,都需要获取当前的时间,通过Da ...
- NSDate时间类/NSDateFormatter日期格式类
#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { // NSDate 时间类 继承自N ...
- Object类、日期时间类、system类及StringBuilder字符串容器
一.Object类常用API 1.1 概述 java.lang.Object类是Java语言中的根类,即所有类的父类.Object类中描述的所有方法子类都可以使用.在对象实例化的时候,最终找的父类就是 ...
- java_Object类、日期时间类、System类、包装类
Object类 java.lang.Object 类是所有类的父类.它描述的所有方法子类都可以使用.在对象实例化的时候,最终找的父类就是Object. 如果一个类没有特别指定父类, 那么默认则继承自O ...
- C#工具类之素数扩展类
/// <summary> /// 素数帮忙类 /// 本类是从.net源码 类 internal static class HashHelpers 类里抽取相应的代码 /// https ...
随机推荐
- JAVA中string类的split方法
split([separator,[limit]])第一个参数为分隔符,可以是一个正则表达式,第二个参数为返回结果数组的长度
- 使用ffmpeg转换视频格式
命令: ffmpeg -i infile -ab 128 -acodec libmp3lame -ac 1 -ar 22050 -r 29.97 -qscale 6 -y outfile 说明: ...
- [codeforces126B]Password
解题关键:KMP算法中NEXT数组的理解. #include<bits/stdc++.h> #define maxn 1000006 using namespace std; typede ...
- js面试题知识点全解(一作用域)
问题: 1.说一下对变量提升的理解 2.说明this几种不同的使用场景 3.如何理解作用域 4.实际开发中闭包的应用 知识点: js没有块级作用域只有函数和全局作用域,如下代码: if(true){ ...
- 框架之 hibernate之各种查询
1. Hibernate的查询方式 2. Hibernate的查询策略 案例:使用Hibernate完成查询所有联系人功能 需求分析 1. 完成所有的联系人的查询 技术分析之Hibernate框架的查 ...
- win10 更换秘钥报错:拒绝访问:所请求的操作需要提升特权
直接打开cmd执行换秘钥的命令: slmgr /ipk VK7JG-NPHTM-C97JM-9MPGT-3V66T slmgr /skms kms.xspace.in slmgr /ato 报错如图: ...
- Mind Map-在线软件(转)
From http://blog.sina.com.cn/s/blog_74b687ac0102dtp1.html 第一款:http://tu.mindpin.com/ 用非常简单, 先用Email ...
- 后台执行UNIX/Linux命令和脚本的五种方法
hiveserver 后台启动 nohup "${HIVE_HOME}"/bin/hive --service hiveserver2 & 1. 使用&符号在后台执 ...
- java中什么是代码点,什么是代码单元?
1.代码点&代码单元,是从Unicode标准而来的术语,Unicode标准的核心是一个编码字符集,它为每一个字符分配一个唯一数字.Unicode标准始终使用16进制数字,并且在书写时在前面加上 ...
- p4301 [CQOI2013]新Nim游戏
传送门 分析 通过nim游戏我们可以知道我们现在的任务就是通过两轮之后使得剩余的几堆异或和为非0数 所以我们只需要在第一步使得剩余集合的任意非空子集的异或和非0即可 于是我们考虑线性基 我们知道线性基 ...