一行代码判断两个日期是否在同一周

上传人:飞*** 文档编号:4767186 上传时间:2017-08-25 格式:DOC 页数:2 大小:35.50KB
返回 下载 相关 举报
一行代码判断两个日期是否在同一周_第1页
第1页 / 共2页
一行代码判断两个日期是否在同一周_第2页
第2页 / 共2页
亲,该文档总共2页,全部预览完了,如果喜欢就下载吧!
资源描述

《一行代码判断两个日期是否在同一周》由会员分享,可在线阅读,更多相关《一行代码判断两个日期是否在同一周(2页珍藏版)》请在金锄头文库上搜索。

1、一行代码判断两个日期/时间是否在同一周最近在做一个业务系统时,需要判断两个日期是否在同一周,开始没有太去想,就在网上找一下看是否有现成的代码可以复用,找到一个函数如下:经过试验,发现该函数判断不准确,而且该函数的可读性很差,于是自己想了一下,有两种方法可以准确判断出两个日期是否在同一周。方法一原理:日期 1 所在周的星期天和日期 2 所在周的星期天为同一天,表示在同一周。方法二原理:假定日期 dt 为某周的星期天,比如 1752 年 12 月 31 日,则,日期 1 减去 dt 所得天数整除 7 的商等于日期 2 减去 dt 所得天数整除 7 的商,表示在同一周。采用 C#实现上述两种方法如下

2、(以下代码经过严格测试):using System;using System.Collections.Generic;using System.Text;namespace IsInSameWeekclass Programstatic void Main(string args)DateTime dtS = new DateTime(2012, 4, 30);/ / 判断两个日期是否在同一周 / / 开始日期 / 结束日期 / private bool IsInSameWeek(DateTime dtmS, DateTime dtmE) TimeSpan ts = dtmE - dtmS;

3、double dbl = ts.TotalDays; int intDow = Convert.ToInt32(dtmE.DayOfWeek); if (intDow = 0) intDow = 7; if (dbl = 7 | dbl = intDow) return false; else return true; DateTime dtE = new DateTime(2012, 5, 4);bool b1 = IsInSameWeek1(dtE, dtS);Console.WriteLine(string.Format(0:yyyy-MM-dd和1:yyyy-MM-dd在同一周吗? -

4、 2, dtE, dtS, b1);bool b2 = IsInSameWeek2(dtE, dtS - new TimeSpan(2, 0, 0, 0);Console.WriteLine(string.Format(0:yyyy-MM-dd和1:yyyy-MM-dd在同一周吗? - 2, dtE, dtS - new TimeSpan(2, 0, 0, 0), b2);Console.WriteLine(按回车键退出.);Console.Read();/ / 判断两个日期是否在同一周/ / 日期 1/ 日期 2/ 同一周返回 true,否则返回 false/ / 原理:日期 1 所在周的星

5、期天 和 日期 2 所在周的星期天 为同一天,表示在同一周/ public static bool IsInSameWeek1(DateTime dtS, DateTime dtE)return (dtE - new TimeSpan(Convert.ToInt32(dtE.DayOfWeek), 0, 0, 0) - dtE.TimeOfDay) = (dtS - new TimeSpan(Convert.ToInt32(dtS.DayOfWeek), 0, 0, 0) - dtS.TimeOfDay);/ / 判断两个日期是否在同一周/ / 日期 1d/ 日期 2/ 同一周返回 true,

6、否则返回 false/ / 原理:假定日期 dt 为为某周的星期天,比如 1752 年 12 月 31 日,/ 则,日期 1 减去 dt 所得天数整除 7 的商 等于 日期 2 减去 dt 所得天数整除 7 的商,表示在同一周/ public static bool IsInSameWeek2(DateTime dtS, DateTime dtE)/1 秒内有 10,000,000 个计时周期return (dtE - new DateTime(1752, 12, 31).Ticks / (7 * 24 * 60 * 60 * 10000000L) = (dtS - new DateTime(1752, 12, 31).Ticks / (7 * 24 * 60 * 60 * 10000000L);

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 研究报告 > 综合/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号