欢迎来到.net学习网

欢迎联系站长一起更新本网站!QQ:879621940

您当前所在位置:首页 » C# » 正文

热门阅读

在C#得到指定日期所在周的第一天与最后一天的方法

创建时间:2012年06月15日 16:01  阅读次数:(16136)
分享到:
我们在计算时期的时候,可能会经常需要得到指定日期所在周的第一天与最后一天的日期,又因为我们的计算周的方式与西方有所不同,他们是以星期天为每周的第一天,而我们习惯以星期一为每周的第一天。这里我们分别给出两种不同计算方法的示例,方法如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace WyfClass
{
public class tools
{
/// <summary>
/// 得到本周第一天(以星期天为第一天)
/// </summary>
/// <param name="datetime"></param>
/// <returns></returns>
public DateTime GetWeekFirstDaySun(DateTime datetime)
{
    //星期天为第一天
    int weeknow = Convert.ToInt32(datetime.DayOfWeek);
    int daydiff = (-1) * weeknow;

    //本周第一天
    string FirstDay = datetime.AddDays(daydiff).ToString("yyyy-MM-dd");
    return Convert.ToDateTime(FirstDay);
}

/// <summary>
/// 得到本周第一天(以星期一为第一天)
/// </summary>
/// <param name="datetime"></param>
/// <returns></returns>
public DateTime GetWeekFirstDayMon(DateTime datetime)
{
    //星期一为第一天
    int weeknow = Convert.ToInt32(datetime.DayOfWeek);

    //因为是以星期一为第一天,所以要判断weeknow等于0时,要向前推6天。
    weeknow = (weeknow == 0 ? (7 - 1) : (weeknow - 1));
    int daydiff = (-1) * weeknow;

    //本周第一天
    string FirstDay = datetime.AddDays(daydiff).ToString("yyyy-MM-dd");
    return Convert.ToDateTime(FirstDay);
}

/// <summary>
/// 得到本周最后一天(以星期六为最后一天)
/// </summary>
/// <param name="datetime"></param>
/// <returns></returns>
public DateTime GetWeekLastDaySat(DateTime datetime)
{
    //星期六为最后一天
    int weeknow = Convert.ToInt32(datetime.DayOfWeek);
    int daydiff = (7 - weeknow) - 1;

    //本周最后一天
    string LastDay = datetime.AddDays(daydiff).ToString("yyyy-MM-dd");
    return Convert.ToDateTime(LastDay);
}

/// <summary>
/// 得到本周最后一天(以星期天为最后一天)
/// </summary>
/// <param name="datetime"></param>
/// <returns></returns>
public DateTime GetWeekLastDaySun(DateTime datetime)
{
    //星期天为最后一天
    int weeknow = Convert.ToInt32(datetime.DayOfWeek);
    weeknow = (weeknow == 0 ? 7 : weeknow);
    int daydiff = (7 - weeknow);

    //本周最后一天
    string LastDay = datetime.AddDays(daydiff).ToString("yyyy-MM-dd");
    return Convert.ToDateTime(LastDay);
}
}
}

我们可以使用任何日期为参数传入到上面对应的方法中得到日期所在周的第一天或者是最后一天。&
来源:.net学习网
说明:所有来源为 .net学习网的文章均为原创,如有转载,请在转载处标注本页地址,谢谢!
【编辑:Wyf

打赏

取消

感谢您的支持,我会做的更好!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

最新评论

共有评论4条
  • #1楼  评论人:xiaoxiao  评论时间:2012-6-27 9:21:20
  • 很实用的类啊,收藏了。
  • #2楼  评论人:匿名  评论时间:2012-7-13 0:03:01
  • 为什么每次都要
    string LastDay = datetime.AddDays(daydiff).ToString("yyyy-MM-dd");
    return Convert.ToDateTime(LastDay);
    这么写呢
    直接return datetime.AddDays(daydiff);
    不更好吗
  • #3楼  评论人:Wyf  评论时间:2012-7-13 8:46:08
  • 这是我的习惯写法,这里可能看不出来好处。但比如,你有一个属性,
    public DataTable GetData
    {
    get{……这里是有复杂计算}
    }

    这个时候,你在某方法中使用这个属性,最好就是先初始化一个DataTable,然后将属性值赋予它。
    DataTable dt=GetData
    然后使用的时候用dt,而不是直接用GetDate,
    这要写的好处是,如果在方法中多次用到dt的值,它也只计算一次属性中的过程,即DataTable dt=GetData时计算,使用dt的时候并不计算,如果你直接用GetData,那么你引用一次就会计算一次。
  • #4楼  评论人:ximengchj  评论时间:2012-7-13 10:07:17
  • 哦这样啊。没注意过
    谢谢啦
发表评论:
留言人:
内  容:
请输入问题 25+66=? 的结果(结果是:91)
结  果: