linux判断季末日期,C#根据当前时间确定日期范围(本周、本月、本季度、本年度)...

在C#的开发当中经常遇到关于一个日期时间"+/-"一段时间的问题,下面是一些相关总结,供大家参考.

DateTime dt = DateTime.Now; //当前时间

DateTime startWeek = dt.AddDays(1 - Convert.ToInt32(dt.DayOfWeek.ToString("d"))); //本周周一

DateTime endWeek = startWeek.AddDays(6); //本周周日

DateTime startMonth = dt.AddDays(1 - dt.Day); //本月月初

DateTime endMonth = startMonth.AddMonths(1).AddDays(-1); //本月月末

//DateTime endMonth = startMonth.AddDays((dt.AddMonths(1) - dt).Days - 1); //本月月末

DateTime startQuarter = dt.AddMonths(0 - (dt.Month - 1) % 3).AddDays(1 - dt.Day); //本季度初

DateTime endQuarter = startQuarter.AddMonths(3).AddDays(-1); //本季度末

DateTime startYear = new DateTime(dt.Year, 1, 1); //本年年初

DateTime endYear = new DateTime(dt.Year, 12, 31); //本年年末

=============================

/// /// 计算本周起始日期(礼拜一的日期)

///

/// 该周中任意一天

/// 返回礼拜一日期,后面的具体时、分、秒和传入值相等

public static DateTime CalculateFirstDateOfWeek(DateTime someDate)

{

int i = someDate.DayOfWeek - DayOfWeek.Monday;

if (i == -1) i = 6;// i值 > = 0 ,因为枚举原因,Sunday排在最前,此时Sunday-Monday=-1,必须+7=6。

TimeSpan ts = new TimeSpan(i, 0, 0, 0);

return someDate.Subtract(ts);

}

/// /// 计算本周结束日期(礼拜日的日期)

///

/// 该周中任意一天

/// 返回礼拜日日期,后面的具体时、分、秒和传入值相等

public static DateTime CalculateLastDateOfWeek(DateTime someDate)

{

int i = someDate.DayOfWeek - DayOfWeek.Sunday;

if(i != 0) i = 7 - i;// 因为枚举原因,Sunday排在最前,相减间隔要被7减。

TimeSpan ts = new TimeSpan(i, 0, 0, 0);

return someDate.Add(ts);

}

/// /// 判断选择的日期是否是本周(根据系统当前时间决定的‘本周’比较而言)

///

///

///

public static bool IsThisWeek(DateTime someDate)

{

//得到someDate对应的周一

DateTime someMon = CalculateFirstDateOfWeek(someDate);

//得到本周一

DateTime nowMon = CalculateFirstDateOfWeek(DateTime.Now);

TimeSpan ts = someMon - nowMon;

if (ts.Days < 0)

ts = -ts;//取正

if (ts.Days >= 7)

{

return false;

}

else

{

return true;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值