项目gitHub地址 点我跳转

今天给大家带来一个C#里面的时间工具类,具体的直接看下面代码

 using System;

 namespace ToolBox.DateTimeTool
{
public static class DateTimeExtend
{
/// <summary>
/// 获取本日开始时间(0点0分0秒)
/// </summary>
/// <param name="dateTime"></param>
/// <returns></returns>
public static DateTime GetDayStart(this DateTime dateTime)
{
return dateTime.Date;
} /// <summary>
/// 获取本日结束时间(23点59分59秒)
/// </summary>
/// <param name="dateTime"></param>
/// <returns></returns>
public static DateTime GetDayEnd(this DateTime dateTime)
{
return dateTime.Date.AddDays().AddMilliseconds(-);
} /// <summary>
/// 获取本周开始时间
/// </summary>
/// <param name="dateTime"></param>
/// <returns></returns>
public static DateTime GetWeekStart(this DateTime dateTime)
{
return dateTime.AddDays(-(int)dateTime.DayOfWeek + ).GetDayStart();
} /// <summary>
/// 获取本周结束时间
/// </summary>
/// <param name="dateTime"></param>
/// <returns></returns>
public static DateTime GetWeekEnd(this DateTime dateTime)
{
return dateTime.AddDays( - (int)dateTime.DayOfWeek).GetDayEnd();
} /// <summary>
/// 获取本月开始时间
/// </summary>
/// <param name="dateTime"></param>
/// <returns></returns>
public static DateTime GetMonthStart(this DateTime dateTime)
{
return new DateTime(dateTime.Year, dateTime.Month, , , , , );
} /// <summary>
/// 获取本月结束时间
/// </summary>
/// <param name="dateTime"></param>
/// <returns></returns>
public static DateTime GetMonthEnd(this DateTime dateTime)
{
return GetMonthStart(dateTime).AddMonths().AddMilliseconds(-);
} /// <summary>
/// 获取本季度开始时间
/// </summary>
/// <param name="dateTime"></param>
/// <returns></returns>
public static DateTime GetSeasonStart(this DateTime dateTime)
{
var time = dateTime.AddMonths( - ((dateTime.Month - ) % ));
return DateTime.Parse(time.AddDays(-time.Day + ).ToString("yyyy/MM/dd 00:00:00"));
} /// <summary>
/// 获取本季度结束时间
/// </summary>
/// <param name="dateTime"></param>
/// <returns></returns>
public static DateTime GetSeasonEnd(this DateTime dateTime)
{
var time = dateTime.AddMonths(( - ((dateTime.Month - ) % ) - ));
return DateTime.Parse(time.AddMonths().AddDays(-time.AddMonths().Day + ).AddDays(-).ToString("yyyy/MM/dd 23:59:59"));
} /// <summary>
/// 获取本年开始时间
/// </summary>
/// <param name="dateTime"></param>
/// <returns></returns>
public static DateTime GetYearStart(this DateTime dateTime)
{
return DateTime.Parse(dateTime.AddDays(-dateTime.DayOfYear + ).ToString("yyyy/MM/dd 00:00:00"));
} /// <summary>
/// 获取本年结束时间
/// </summary>
/// <param name="dateTime"></param>
/// <returns></returns>
public static DateTime GetYearEnd(this DateTime dateTime)
{
var time2 = dateTime.AddYears();
return DateTime.Parse(time2.AddDays(-time2.DayOfYear).ToString("yyyy/MM/dd 23:59:59"));
} /// <summary>
/// 北京时间转换成unix时间戳(10位/秒)
/// </summary>
/// <param name="dateTime"></param>
/// <returns></returns>
public static long BeijingTimeToUnixTimeStamp10(this DateTime dateTime)
{
return (long)(dateTime - new DateTime(, , , , , )).TotalSeconds;
} /// <summary>
/// 格林威治时间转换成unix时间戳(10位/秒)
/// </summary>
/// <param name="dateTime"></param>
/// <returns></returns>
public static long UtcTimeToUnixTimeStamp10(this DateTime dateTime)
{
return (long)(dateTime - new DateTime(, , , , , )).TotalSeconds;
} /// <summary>
/// 北京时间转换成unix时间戳(13位/毫秒)
/// </summary>
/// <param name="dateTime"></param>
/// <returns></returns>
public static long BeijingTimeToUnixTimeStamp13(this DateTime dateTime)
{
return (long)(dateTime - new DateTime(, , , , , )).TotalMilliseconds;
} /// <summary>
/// 格林威治时间转换成unix时间戳(13位/毫秒)
/// </summary>
/// <param name="dateTime"></param>
/// <returns></returns>
public static long UtcTimeToUnixTimeStamp13(this DateTime dateTime)
{
return (long)(dateTime - new DateTime(, , , , , )).TotalMilliseconds;
} /// <summary>
/// 10位unix时间戳转换成北京时间
/// </summary>
/// <param name="dateTime"></param>
/// <returns></returns>
public static DateTime UnixTimeStamp10ToBeijingTime(this long unixTimeStamp)
{
return new DateTime(, , , , , ).AddSeconds(unixTimeStamp);
} /// <summary>
/// 10位unix时间戳转换成格林威治
/// </summary>
/// <param name="dateTime"></param>
/// <returns></returns>
public static DateTime UnixTimeStamp10ToUtcTime(this long unixTimeStamp)
{
return new DateTime(, , , , , ).AddSeconds(unixTimeStamp);
} /// <summary>
/// 13位unix时间戳转换成北京时间
/// </summary>
/// <param name="dateTime"></param>
/// <returns></returns>
public static DateTime UnixTimeStamp13ToBeijingTime(this long unixTimeStamp)
{
return new DateTime(, , , , , ).AddMilliseconds(unixTimeStamp);
} /// <summary>
/// 13位unix时间戳转换成格林威治
/// </summary>
/// <param name="dateTime"></param>
/// <returns></returns>
public static DateTime UnixTimeStamp13ToUtcTime(this long unixTimeStamp)
{
return new DateTime(, , , , , ).AddMilliseconds(unixTimeStamp);
} /// <summary>
/// 当前日期所在月份第一个指定星期几的日期
/// </summary>
/// <param name="date">给定日期</param>
/// <param name="dayOfWeek">星期几</param>
/// <returns>所对应的日期</returns>
public static DateTime GetFirstWeekDayOfMonth(this DateTime date, DayOfWeek dayOfWeek)
{
var dt = date.GetMonthStart();
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.GetMonthEnd();
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 < other;
} /// <summary>
/// 判断是否比指定时间晚
/// </summary>
/// <param name="date"></param>
/// <param name="other"></param>
/// <returns></returns>
public static bool IsAfter(this DateTime date, DateTime other)
{
return date > other;
} /// <summary>
/// 给定日期所在月份共有多少天
/// </summary>
/// <param name="date"></param>
/// <returns></returns>
public static int GetCountDaysOfMonth(this DateTime date)
{
return date.GetMonthEnd().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 IsWeekend(this DateTime date)
{
return date.DayOfWeek == DayOfWeek.Saturday || date.DayOfWeek == DayOfWeek.Sunday;
} /// <summary>
/// 是否是工作日
/// </summary>
/// <param name="date"></param>
/// <returns></returns>
public static bool IsWeekDay(this DateTime date)
{
return !date.IsWeekend();
} /// <summary>
/// 判断是否为今天
/// </summary>
/// <param name="date"></param>
/// <returns></returns>
public static bool IsToday(this DateTime date)
{
return date.Date == DateTime.Now.Date;
} /// <summary>
/// 判定公历闰年遵循的一般规律为:四年一闰,百年不闰,四百年再闰。
/// 公历闰年的精确计算方法:(按一回归年365天5小时48分45.5秒)
/// 普通年能被4整除而不能被100整除的为闰年。 (如2004年就是闰年,1900年不是闰年)
/// 世纪年能被400整除而不能被3200整除的为闰年。 (如2000年是闰年,3200年不是闰年)
/// 对于数值很大的年份能整除3200,但同时又能整除172800则又是闰年。(如172800年是闰年,86400年不是闰年)
/// 公元前闰年规则如下:
/// 非整百年:年数除4余数为1是闰年,即公元前1、5、9……年;
/// 整百年:年数除400余数为1是闰年,年数除3200余数为1,不是闰年,年数除172800余1又为闰年,即公元前401、801……年。
/// </summary>
/// <param name="dateTime"></param>
/// <returns></returns>
public static bool IsLeap(this DateTime dateTime)
{
var year = dateTime.Year;
if ((year % == && year % != )
|| (year % == && year % != )
|| (year % == && year % == ))
return true;
else
return false;
} /// <summary>
/// 获取当前年天数
/// </summary>
/// <param name="dateTime"></param>
/// <returns></returns>
public static int GetDaysByYear(this DateTime dateTime)
{
return (new DateTime(dateTime.Year + , , ) - new DateTime(dateTime.Year, , )).Days;
} /// <summary>
/// 获取当前年天数
/// </summary>
/// <param name="dateTime"></param>
/// <returns></returns>
public static int GetWeekCountByYear(this DateTime dateTime)
{
//找到今年的第一天是周几
int firstWeekend = Convert.ToInt32(DateTime.Parse(dateTime.Year + "-1-1").DayOfWeek); //获取第一周的差额,如果是周日,则firstWeekend为0,第一周也就是从周天开始的。
int weekDay = firstWeekend == ? : ( - firstWeekend + ); //获取今天是一年当中的第几天
int currentDay = dateTime.DayOfYear; //(今天 减去 第一周周末)/7 等于 距第一周有多少周 再加上第一周的1 就是今天是今年的第几周了
// 刚好考虑了惟一的特殊情况就是,今天刚好在第一周内,那么距第一周就是0 再加上第一周的1 最后还是1
int current_week = Convert.ToInt32(Math.Ceiling((currentDay - weekDay) / 7.0)) + ;
return current_week;
} }
}

这个时间工具类是自己通过各种途径汇总的常用方法,需要的朋友可以自行拿走,有其他新的需求可以在评论下面告诉我,一起完善,谢谢

另外需要使用的朋友可以直接在Nuget 搜索  ToolBox.DateTimeTool 安装使用即可 支持NET Framework 以及Net core

C# DateTime 工具类的更多相关文章

  1. 第二章 DateTime工具类

    项目中经常需要将DateTime转化成各种格式的String类型,或将各种类型的String转为DateTime类型. 本文提供一个DateTime与String的转换工具类: import org. ...

  2. 一个好的Java时间工具类DateTime

    此类的灵感来源于C# 虽然网上有什么date4j,但是jar太纠结了,先给出源码,可以继承到自己的util包中,作为一个资深程序员,我相信都有不少好的util工具类,我也希望经过此次分享,能带动技术大 ...

  3. [转]Java常用工具类集合

    转自:http://blog.csdn.net/justdb/article/details/8653166 数据库连接工具类——仅仅获得连接对象 ConnDB.java package com.ut ...

  4. .net使用正则表达式校验、匹配字符工具类

    开发程序离不开数据的校验,这里整理了一些数据的校验.匹配的方法: /// <summary> /// 字符(串)验证.匹配工具类 /// </summary> public c ...

  5. HTTP请求工具类

    HTTP请求工具类,适用于微信服务器请求,可以自测 代码; /// <summary> /// HTTP请求工具类 /// </summary> public class Ht ...

  6. [工具类]DataTable与泛型集合List互转

    写在前面 工作中经常遇到datatable与list,对于datatable而言操作起来不太方便.所以有的时候还是非常希望通过泛型集合来进行操作的.所以这里就封装了一个扩展类.也方便使用. 类 方法中 ...

  7. 写了个SharedPreferences的工具类(带加密)

    /* * Copyright (C) 2014 Jason Fang ( ijasonfang@gmail.com ) * * Licensed under the Apache License, V ...

  8. [C#] 常用工具类——文件操作类

    /// <para> FilesUpload:工具方法:ASP.NET上传文件的方法</para> /// <para> FileExists:返回文件是否存在&l ...

  9. 关于Memcache使用的工具类

    分布式缓存有它自己的好处 . 下面的 ConstValue.sessionId  是一个常量 public static readonly string sessionId = "sessi ...

随机推荐

  1. C#中TripleDES对应Java中的DESede即大家说的3DES,附C#及Java加解密结果一致的控制台程序例子

    直接上代码了. Java控制台代码: package Test; import java.security.Key; import javax.crypto.Cipher; import javax. ...

  2. 异数OS 织梦师-云(五)-- 容器服务化,绿色拯救未来。

    . 异数OS 织梦师-云(五)– 容器服务化,绿色拯救未来. 本文来自异数OS社区 github: https://github.com/yds086/HereticOS 异数OS社区QQ群: 652 ...

  3. 使用Oracle Stream Analytics 21步搭建大数据实时流分析平台

    概要: Oracle Stream Analytics(OSA)是企业级大数据流实时分析计算平台.它可以通过使用复杂的关联模式,扩充和机器学习算法来自动处理和分析大规模实时信息.流式传输的大数据可以源 ...

  4. [LOJ#3022][网络流]「CQOI2017」老 C 的方块

    题目传送门 定义有特殊边相邻的格子颜色为黑,否则为白 可以看出,题目给出的限制条件的本质是如果两个小方块所在的格子 \(x\) 和 \(y\) 为两个相邻的黑格,那么 \(x\) 和 \(y\) 之间 ...

  5. CF6B President's Office 题解

    看到大致思路一致的题解,决定发一篇运用STL不用dfs的题解     好久不发题解,心里不爽 思路: 1.输入的同时找到总统桌子的位置,用vector<pair <int,int> ...

  6. eclipse android ndk开发遇到的问题.

    1. error:parameter name omitted 用javah生成的.h文件中,方法是没有指定形参的,实现的时候需要我们在实现的方法定义中加上形参. 2. 'NewStringUTF' ...

  7. (转)调皮的location.href

    来自 wooyun'drops --->呆子不开口 0x00 背景 随着水瓶月的到来,在祖国繁荣昌盛的今天,web系统的浏览器端也越来越重,很多的功能逻辑都放在了js中,前端的漏洞也越来越多. ...

  8. 分层有限状态机的C++实现

    为了方便我的游戏开发,写了这么一个通用的分层有限状态机.希望在其稳定以后,可以作为一个组件加入到我的游戏引擎当中. 目前使用了std::function来调用回调函数,在未来可能会用委托机制代替. 第 ...

  9. 代码中理解CPU结构及工作原理

    一.前言 从研究生开始到工作半年,陆续在接触MCU SOC这些以CPU为核心的控制器,但由于专业的原因一直对CPU的内部结构和工作原理一知半解.今天从一篇博客中打破一直以来的盲区.特此声明,本文设计思 ...

  10. 小白学Java:I/O流

    目录 小白学Java:I/O流 基本分类 发展史 文件字符流 输出的基本结构 流中的异常处理 异常处理新方式 读取的基本结构 运用输入与输出 文件字节流 缓冲流 字符缓冲流 装饰设计模式 转换流(适配 ...