时间问题? 几天都没有做出来..如何获得每个星期的星期1? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 /// <summary>/// 计算本周起始日期(礼拜一的日期)/// </summary>/// <param name="someDate">该周中任意一天</param>/// <returns>返回礼拜一日期,后面的具体时、分、秒和传入值相等</returns>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);}/// <summary>/// 计算本周结束日期(礼拜日的日期)/// </summary>/// <param name="someDate">该周中任意一天</param>/// <returns>返回礼拜日日期,后面的具体时、分、秒和传入值相等</returns>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);}/// <summary>/// 判断选择的日期是否是本周(根据系统当前时间决定的‘本周’比较而言)/// </summary>/// <param name="someDate"></param>/// <returns></returns>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; }} 楼上的,你的算法基于的假设是“星期一是每周的第一天”,但好像根据我们的日历或者 DayOfWeek 枚举的排序,每周的第一天应该是星期日才对。如果真的要设计跨文化程序,那么就要用到 Application.Calendar.FirstDayOfWeek 来判断了。当然,这不是什么原则问题。呵呵……另外,判断是否为本周的话,直接用 someDate.DayOfYear - firstDayOfWeek.DayOfYear,然后判断所得的 TimeSpan.Days 是否大于 7 就行了。(这里 someDate 是要判断的日期, firstDayOfWeek 是每周的第一天)。最后,枚举相减可能会导致类型转换问题吧? Dim d1 As Date = "2006-10-1" If d1.DayOfWeek = 0 Then MsgBox("本天是一个星期的第一天!") 在ASP里周日是第一天NET里也一样LZ与二楼的要注意一下哟 c#怎么实现图片翻转90度??? 几道yahoo笔试题 需用户验证的代理应如何设置??? string s=null与string s="" 送分问题 input 里面的内容怎么样获取 求助 哪位大虾帮我把这段程序注释(请详细些)?谢谢 连接数据库问题 一个Windows应用发送邮件的问题,为什么“未能访问CDO.Message对象”?加贴给分。 如何根据已经读出的datatable创建实际的表 对于高版本的IE浏览器,我们可以设计在线编辑器。对于IE处于编辑状态时,如何通过客户端脚本获得鼠标在编辑框中的位置坐标? 初学C#,请前辈指点迷津
/// 计算本周起始日期(礼拜一的日期)
/// </summary>
/// <param name="someDate">该周中任意一天</param>
/// <returns>返回礼拜一日期,后面的具体时、分、秒和传入值相等</returns>
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);
}/// <summary>
/// 计算本周结束日期(礼拜日的日期)
/// </summary>
/// <param name="someDate">该周中任意一天</param>
/// <returns>返回礼拜日日期,后面的具体时、分、秒和传入值相等</returns>
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);
}/// <summary>
/// 判断选择的日期是否是本周(根据系统当前时间决定的‘本周’比较而言)
/// </summary>
/// <param name="someDate"></param>
/// <returns></returns>
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;
}
}
直接用 someDate.DayOfYear - firstDayOfWeek.DayOfYear,然后判断所得的 TimeSpan.Days 是否大于 7 就行了。(这里 someDate 是要判断的日期, firstDayOfWeek 是每周的第一天)。
最后,枚举相减可能会导致类型转换问题吧?
If d1.DayOfWeek = 0 Then MsgBox("本天是一个星期的第一天!")
NET里也一样
LZ与二楼的要注意一下哟