设为首页 加入收藏

TOP

C#深入浅出获取时间DateTime(一)
2019-09-17 18:24:20 】 浏览:37
Tags:深入浅出 获取 时间 DateTime

首先,先了解微软.net里面的DateTime的DateTime.Now、DateTime.Now.Date、DateTime.Now.Day、DateTime.Now.DayOfWeek、DateTime.Now.DayOfYear、DateTime.Now.Month


 //DateTime.Now

// 摘要:
// 获取一个 System.DateTime 对象,该对象设置为此计算机上的当前日期和时间,表示为本地时间。
//
// 返回结果:
// 其值为当前日期和时间的对象。


//DateTime.Now.Date
// 摘要:
// 获取此实例的日期部分。
//
// 返回结果:
// 一个新对象,其日期与此实例相同,时间值设置为午夜 12:00:00 (00:00:00)。


 // DateTime.Now.Day

// 摘要:
// 获取此实例所表示的日期为该月中的第几天。
//
// 返回结果:
// 日组成部分,表示为 1 和 31 之间的一个值。


 // DateTime.Now.DayOfWeek

// 摘要:
// 获取此实例所表示的日期是星期几。
//
// 返回结果:
// 一个枚举常量,指示此 System.DateTime 值是星期几。


 // DateTime.Now.DayOfYear

// 摘要:
// 获取此实例所表示的日期是该年中的第几天。
//
// 返回结果:
// 该年中的第几天,表示为 1 和 366 之间的一个值。


 // DateTime.Now.Month

// 摘要:
// 获取此实例所表示日期的月份部分。
//
// 返回结果:
// 月组成部分,表示为 1 和 12 之间的一个值。

1. 今天0时0分0秒

DateTime.Now.Date;//2019/3/6 0:00:00

2.本周第1天和最后1天(时间值设置为午夜 12:00:00 (00:00:00))

//获取今天是本周的周几DateTime.Now.DayOfWeek

//DateTime.Now – DateTime.Now.DayOfWeek//周日

//DateTime.Now - (DateTime.Now.DayOfWeek+1)//周一

DateTime.Now.AddDays(-(int)DateTime.Now.DayOfWeek + 1).Date;//2019/3/4 0:00:00 周一 


 

//获取今天是本周的周几DateTime.Now.DayOfWeek

//本周剩余天数:7 - (int)DateTime.Now.DayOfWeek

//DateTime.Now.AddDays(本周剩余天数)//本周周末周日

DateTime.Now.AddDays(7 - (int)DateTime.Now.DayOfWeek).Date;//2019/3/10 0:00:00 周日

3.本月第1天和最后1天(时间值设置为午夜 12:00:00 (00:00:00))

//DateTime.Now.Day//今天是本月的第n天

//DateTime.Now.Day - 1//今天是本月的第n - 1天

//DateTime.Now - (DateTime.Now.Day - 1)//本月的第1天

DateTime.Now.AddDays(-DateTime.Now.Day + 1).Date;//本月的第1天 2019/3/1 00:00:00


 

//DateTime.Now.AddMonths(1);//下个月时间

//DateTime.Now.AddMonths(1).Day;//下个月的第n天

//DateTime.Now.AddMonths(1).Day - 1;//下个月的第n天-1

//DateTime.Now.AddMonths(1).AddDays(-DateTime.Now.AddMonths(1).Day + 1);//下个月的第1天

//DateTime.Now.AddMonths(1).AddDays(-DateTime.Now.AddMonths(1).Day + 1).AddDays(-1);//下个月的第1天-1天,就是本月最后1天

DateTime.Now.AddMonths(1).AddDays(-DateTime.Now.AddMonths(1).Day + 1).AddDays(-1).Date;//本月最后1天 2019/3/31 00:00:00

4.本季度第1天和最后1天(时间值设置为午夜 12:00:00 (00:00:00))

4.1本季度第1天求法思路

先来了解如何根据DateTime.Now获取本季度的第1天,DateTime.Now.Month是本年的第m个月,如果直接使用m对季度单位3取余,得到当前月份是本季度的第n个月;然后,使用DateTime.Now.AddMonths(-n)获取本季度第1个月,需要考虑n为1(季度第1个)、2(季度第2个)、0(季度第3个)时,减去不同的数得到本季度的第1个月;如果,我们换一种方法,使用DateTime.Now.Month - 1得到本年的第x个月, x对季度单位3取余为y,当y为0时为本季度的第1个月,y为1是本季度第2个月,y为2是本季度第3个月,这时使用DateTime.Now.Month - y得到的就是本季度的第1个月, 最后根据本季度的第1个月求得本季度的第1天。思路表述有点绕,如不理解可以手动模拟过程,代码附上;

var sf1 =  DateTime.Now.Month - 1;//当前第m-1月

var sf2 = (DateTime.Now.Month - 1) % 3;//对季度取余,本季度第n-1月

var sf = DateTime.Now.AddMonths(-((DateTime.Now.Month - 1) % 3));//本季度第1个月 2019/1/6 14:51:25

var sftime = sf.AddDays(-sf.Day + 1).Date;//本季度的第1天 2019/1/1 00:00:00

4.2本季度最后1天求法思路

本季度最后1天的求法,如果直接使用DateTime.Now.Month是本年的第m个月的m对季度单位3取余,也会遇到求本季度第一天类似的问题,采用(DateTime.Now.Month - 1) % 3则不会有问题,然后求当前月+(3-(n-1)-1)个月,得到本季度最后一个月,最后求出本季度的最后1天;

 

var sl1 = DateTime.Now.Month - 1;//当前第m-1月

var sl2=(DateTime.Now.Month - 1) % 3;//对季度取余,本季度第n-1月

var sl3= 3 - ((DateTime.Now.Month - 1) % 3) - 1;//当前月+(3-(n-1)-1)个月,得到本季度最后一个月

var sl = DateTime.Now.AddMonths((3 - ((DateTime.Now.Month - 1) % 3) - 1));//本季度的最后1个月 2019/3/6 14:52:25

var sltime= sl.AddMonths(1).AddDays(-sl.AddMonths(1).Day + 1).AddDays(-1).Date;//本季度的最后1

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇[古怪问题] Marshal.GetActiveObj.. 下一篇【手记】解决“未能创建 SSL/TLS ..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目