C#工具类之日期扩展类

/// <summary>
    /// DateTimeHelper
    /// </summary>
    public static class DateTimeHelper
    {
        /// <summary>
        /// Unix时间起始时间
        /// </summary>
        public static readonly DateTime StarTime = new DateTime(1970, 1, 1);

        /// <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(1);
        }

        /// <summary>
        /// 昨天
        /// </summary>
        /// <param name="date"></param>
        /// <returns></returns>
        public static DateTime Yesterday(this DateTime date)
        {
            return date.AddDays(-1);
        }

        /// <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, 1);
        }

        /// <summary>
        /// 给定月份的最后1天
        /// </summary>
        /// <param name="date"></param>
        /// <returns></returns>
        public static DateTime GetLastDayOfMonth(this DateTime date)
        {
            return date.GetFirstDayOfMonth().AddMonths(1).AddDays(-1);
        }

        /// <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(1);

            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(-1);

            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) < 0;
        }

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

        /// <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, 23, 59, 59, 999);
        }

        /// <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, 12, 0, 0);
        }

        /// <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;
        }
    }
时间: 2024-08-10 23:20:51

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

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

1.日期类,时间类,日期时间类 初步日期使用方法及格式转换方法(旧方法): 格式://Mon Jul 30 11:26:05 CST 2018             年月日时分秒    CST代表北京时间 获取当前毫秒 Date date = new Date(); 转换时间格式: SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String s = sdf.format(date); 日历类的使

OO面向对象———扩展类与被扩展类

扩展类与被扩展类 超类:被扩展类.基类.父类.被final修饰的类不可以做超类. 子类:扩展类.子类.为了描述自己的独特性为,要重写超类的方法.如果不重写就默认继承了父类的方法. 方法重载:同一个类中有多个名称相同的方法,但是参数的类型或参数的个数相同. 方法重写:子类中的方法与超类中的参数列表和名称完全相同. 注意:重写方法时,子类方法的可见性,可以变大,不可以变小. 如:超类用protect修饰,则子类用protected,public修饰 超类用public修饰,则子类用只能用public

java - 工具类 - 包装类,数字相关类, 日期相关类

工具类:java开发者写好的类 1.包装相关类 2.数字相关类 3.日期类 4.字符串 5.集合相关类 6.异常相关类 7.输入输出相关 IO(input/output) 8.线程 9.网络 10.注解 11.GUI 1.包装类: 为了将基本类型也面向对象,所以将他们分装进包装类中 1.byte -- Byte,short --Short,int -- Integer,long -- Long 2.float -- Float,double -- Double 3.char -- Charact

Android工具类之日期操作工具类

/** * 日期操作工具类. */ public class DateUtil { /** * 英文简写如:2016 */ public static String FORMAT_Y = "yyyy"; /** * 英文简写如:12:01 */ public static String FORMAT_HM = "HH:mm"; /** * 英文简写如:1-12 12:01 */ public static String FORMAT_MDHM = "MM-

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

日期类: 1 Date date = new Date(); // 获取当前的系统时间 2 System.out.println("年份:"+ date.getYear()); 3 4 Calendar calendar = Calendar.getInstance(); //获取当前的系统时间. 5 System.out.println("年:"+ calendar.get(Calendar.YEAR)); 6 System.out.println("月

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

一.Object类常用API 1.1 概述 java.lang.Object类是Java语言中的根类,即所有类的父类.Object类中描述的所有方法子类都可以使用.在对象实例化的时候,最终找的父类就是Object. 如果一个类没有特别指定父类, 那么默认则继承自Object类. 1.2 toString方法 public String toString() //返回值为 对象的类型[email protected]+内存地址值 由于toString方法返回的结果是内存地址,而在开发中,经常需要按

C#工具类之字符串扩展类

/// <summary> /// 字典串帮忙类 /// </summary> public static class StringHelper { /// <summary> /// 以默认编码返回字符串所对应的字节数组 /// </summary> /// <param name="data">字符串</param> /// <returns>字节数组</returns> public

C#工具类之素数扩展类

/// <summary> /// 素数帮忙类 /// 本类是从.net源码 类 internal static class HashHelpers 类里抽取相应的代码 /// https://referencesource.microsoft.com/#mscorlib/system/collections/hashtable.cs,e8668bf19da49963 /// Hashtable.cs里 /// </summary> public class PrimeHelper

c#工具类之Int扩展类

public static class IntHelper { /// <summary> /// 转换为2进制字符串 /// </summary> /// <param name="num"></param> /// <returns></returns> public static string To2Base(this int num) { return Convert.ToString(num, 2); }