Week,Month, Year 日期区间辅助类

我们在做一些业务系统的时候,经常会用到一些获取时间段的情况。比如要统计某一周、某月、某年 这样一些时间区间内的一些业务数据。这时候我们就需要获取当前时间段内的一些起止日期。这里分享一个通用的日期辅助类,可以根据传入的日期快速的获取它所在Week、Month、Year的起止日期。

public static class DateHelper

{

public static DateTime WeekFirstDay(this DateTime dt)

{

dt = DateTime.Parse(dt.ToString("yyyy-MM-dd"));

if (dt.DayOfWeek == DayOfWeek.Sunday)

{

return dt.AddDays(-6);

}

return dt.AddDays(1 - (int)dt.DayOfWeek);

}

public static DateTime WeekEndDay(this DateTime dt)

{

dt = DateTime.Parse(dt.ToString("yyyy-MM-dd"));

if (dt.DayOfWeek == DayOfWeek.Sunday)

{

return dt;

}

return dt.AddDays(7 - (int)dt.DayOfWeek);

}

public static DateTime MonthFirstDay(this DateTime dt)

{

dt = DateTime.Parse(dt.ToString("yyyy-MM-dd"));

return dt.AddDays(1 - dt.Day);

}

public static DateTime MonthEndDay(this DateTime dt)

{

dt = DateTime.Parse(dt.ToString("yyyy-MM-dd"));

return dt.AddDays(1 - dt.Day).AddMonths(1).AddDays(-1);

}

public static DateTime YearFirstDay(this DateTime dt)

{

return new DateTime(dt.Year, 1, 1);

}

public static DateTime YearEndDay(this DateTime dt)

{

return new DateTime(dt.Year, 12, 31);

}

}

时间: 2024-10-12 07:26:01

Week,Month, Year 日期区间辅助类的相关文章

JS日期区间选择和计算(一)技术篇

吐槽归吐槽,工作还是不能懈怠滴,接下来说说日期选择的问题吧 首先上需求: 这个需求在后台管理里面是使用的比较频繁的,比如说在查询中:查询一周内的XXX,本月的XXX,上月的XXX等等的需求 技术解决方案: 和月份相关计算要抓住一个不变的日期,因为大家都知道每个月的天数是都不一样的,有28天,29天,30天和31天,所以要进行精确的计算就得抓住共性那就是每个月都有1号,和月份相关的计算1号这我觉得是一个关键点有了这一天你就可以随心所欲的进行日期操控 需求一:选择上个月我要显示出上个月月初和月末两个

查出在当天所处的日期区间的某些数据

现要做报表,要查出在当天所处的日期区间的某些数据 ,sql语句该怎么写? 就是说 无法直接输入日期,日期得在其他表的start date 和 end date 中获得. select * from a  where a.time between        (select b.startdate           from b b          where sysdate between startdate and enddate)    and (select b.enddate   

H5自带的type=date或者month等日期控件移动端显示placeholder

H5自带的type=date或者month等日期控件移动端placeholder会无法显示 解决方法: html部分 <li class="info-item select-item"> <input type="month" class="info-input time" placeholder="*入学时间" id="time-sel"> <span class="

日期区间正则表达式生成模块

功能:给定开始日期和结束日期,返回匹配该段日期区间的正则表达式.生成的正则表达式假定了每个月都有39天,即01-39,所以不要使用该模块来判断日期的合法性.该模块生成的正则表达式的使用场景是从一组合法日期中提取给定区间内的日期.源码如下,使用scala实现. def genRegexp(start:String,end:String): String = { //s:开始e:结束y:年m:月d:日o:个位t:十位 //sy:开始年em:结束月,其他变量命名规则相同 val sy = start.

Sql 获取日期区间

获取制定日期区间 declare @d as date declare @d2 as date set @d = '2014-06-03' set @d2 ='2014-06-10' select convert(varchar(10),dateadd(dd,number,@d)) as dt ,dateadd(dd,-1,convert(varchar(8),dateadd(mm,1,@d),120)+'01') from master..spt_values where type='P' a

mysql 获取指定日期到指定日期 区间段的日期

第一种方法: cross join (就相当于mysql中的循环) CROSS JOIN 把两张表中的数据进行 N * M的组合,即笛卡尔积 这里的两张表利用 union all都有5条数据,所以进行 cross join 后 就有25条数据 而指定的日期区间就会从这25条数据总产生 select CURDATE() - INTERVAL '1' day NOW()(获取当前日期和时间) CURDATE() (获取当前日期) CURTIME() (获取当前时间) 这里用到的是一个 INTERVA

JS日期区间选择和计算(一)吐槽篇

先来吐槽一把: 从一个坑跳到另一个坑,这就是it男的苦逼生活,不管是做前端还是后端,或许你在上家公司挖了坑,没准你在下家公司就入了坑了,入职新公司一个月时间(实际上还差一天),那么我们就开始聊聊这一个月我是怎么过来的 首先聊聊新公司的一些情况 是一家传统行业,虽然公司的规模很大,但是对于技术部来说却只有那么可怜楚楚的几个人,入职那天被假象所迷惑,好惨的,当时我是怎么想的,带我去面试的前台和我说他们的技术部在XX层,当时我就误以为一层都是前端,所以当时还挺心动的,和面试官了得也很开心,顺其发展一口

linux shell 运行指定日期区间内的 python脚本

#!/bin/bash #Please Input start date eg:2016-01-01 and enddate eg:2016-01-20 #IF START DATE IS NULL THEN START DATE EQUAL 2016-01-01 #IF END DATE IS NULL THEN END DATE DEFAULT IS '1 DAY AGO' if [ "$1" != "" ];then startday=`date -d &qu

Js:消息弹出框、获取时间区间、时间格式、easyui datebox 自定义校验、表单数据转化json、控制两个日期不能只填一个

(function ($) { $.messageBox = function (message) { $.messager.show({ title:'消息框提示', msg:message, showType:'show' }); }; /** * 获取时间区间 * @param type 1:当年的一月一日到现在:type 2:获取当月的第一天和最后一天 * return {startTime:xxxx,endTime:xxxx} */ $.getTimeInterval = functi