C#日期操作-星期(week)相关


根据年份和周数(weekIndex),获取星期(week)的开始日期和结束日期

/// <summary>
/// 根据年份和星期周数,获得星期的日期范围
/// </summary>
/// <param name="year">年份</param>
/// <param name="weekIndex">星期的周数,年度第几周</param>
/// <param name="firstDayOfWeek">表示一周的第一天的星期值(枚举值)</param>
/// <returns>日期数组,[开始日期,结束日期]</returns>
public DateTime[] GetDateRange(int year, int weekIndex, DayOfWeek firstDayOfWeek)
{
    DateTime time = DateTime.Parse(year + "-01-01");
    while (time.DayOfWeek != firstDayOfWeek)
    {
        time = time.AddDays(1);
    }
    DateTime time1 = time.AddDays((weekIndex - 1) * 7);
    DateTime time2 = time1.AddDays(6);
    return new DateTime[] { time1, time2 };
}
GarsonZhang www.yesdotnet.com

根据日期,获得当前星期(week)的第一天日期

/// <summary>
/// 根据日期获得星期的第一天
/// </summary>
/// <param name="date">日期</param>
/// <param name="firstDayOfWeek">表示一周的第一天的星期值(枚举值)</param>
/// <returns>星期的第一天</returns>
public DateTime GetWeekFirstDay(DateTime date,DayOfWeek firstDayOfWeek)
{ while (date.DayOfWeek != firstDayOfWeek) { date=date.AddDays(-1); } return date; }
GarsonZhang www.yesdotnet.com

根据日期,获得当前星期(week)的最后一天日期

/// <summary>
/// 根据日期获得星期的最后一天
/// </summary>
/// <param name="date">日期</param>
/// <param name="firstDayOfWeek">表示一周的第一天的星期值(枚举值)</param>
/// <returns>星期的最后一天</returns>
public DateTime GetWeekLastDay(DateTime date, DayOfWeek firstDayOfWeek)
{
    DayOfWeek lastDayOfWeek = (DayOfWeek)((((int)firstDayOfWeek - 1) + 7) % 7);
    while (date.DayOfWeek != lastDayOfWeek)
    {
        date = date.AddDays(1);
    }

    return date;
}
GarsonZhang www.yesdotnet.com

 

根据第一天的星期枚举,来获得星期(week)的最后一天枚举值

/// <summary>
/// 获得一个星期的最后星期值(枚举值)
/// </summary>
/// <param name="firstDayOfWeek"></param>
/// <returns></returns>
public DayOfWeek GetLastDayOfWeek(DayOfWeek firstDayOfWeek)
{
    int lastDayOfWeek = (((int)firstDayOfWeek - 1) + 7) % 7;
    return (DayOfWeek)lastDayOfWeek;
}
GarsonZhang www.yesdotnet.com

获得日期为当年的第几周

/// <summary>
/// 获得当前日期是一年中的第几个星期
/// </summary>
/// <param name="date">日期</param>
/// <param name="rule">定义日历周的枚举值。</param>
/// <param name="firstDayOfWeek">表示一周的第一天的星期值(枚举值)</param>
/// <returns>周数</returns>
public int GetWeekOfYear(DateTime date, System.Globalization.CalendarWeekRule rule, DayOfWeek firstDayOfWeek)
{
    System.Globalization.GregorianCalendar gc = new System.Globalization.GregorianCalendar();
    int weekIndex = gc.GetWeekOfYear(date, rule, firstDayOfWeek);
    return weekIndex;
}
GarsonZhang www.yesdotnet.com

1. 当年第一天所在的日期为第一周

/// <summary>
/// 获得当前日期是一年中的第几个星期
/// 指示年的第一周从该年的第一天开始,到所指定周的下一个首日前结束。值为 0。
/// </summary>
/// <param name="date">日期</param>
/// <param name="firstDayOfWeek">表示一周的第一天的星期值(枚举值)</param>
/// <returns>周数</returns>
public int GetWeekOfYearByFirstDay(DateTime date, DayOfWeek firstDayOfWeek)
{
    System.Globalization.GregorianCalendar gc = new System.Globalization.GregorianCalendar();
    int weekIndex = gc.GetWeekOfYear(date, System.Globalization.CalendarWeekRule.FirstDay, firstDayOfWeek);
    return weekIndex;
}
GarsonZhang www.yesdotnet.com

 

2. 日期从周首日开始匹配,整个星期的日期都在当年才算

/// <summary>
/// 获得当前日期是一年中的第几个星期
/// 指示年的第一周从所指定周首日的第一个匹配项开始,可以是年的第一天或其后某一天。值为 1。
/// </summary>
/// <param name="date">日期</param>
/// <param name="firstDayOfWeek">表示一周的第一天的星期值(枚举值)</param>
/// <returns>周数</returns>
public int GetWeekOfYearByFirstFullWeek(DateTime date, DayOfWeek firstDayOfWeek)
{
    System.Globalization.GregorianCalendar gc = new System.Globalization.GregorianCalendar();
    int weekIndex = gc.GetWeekOfYear(date, System.Globalization.CalendarWeekRule.FirstFullWeek, firstDayOfWeek);
    return weekIndex;
}
GarsonZhang www.yesdotnet.com

 

3. 日期所在周需要报含4天或更多天

开始日期所在周本年度总天数小于4天开始日期所在周本年度总天数大于4天或4天以上
 
/// <summary>
/// 获得当前日期是一年中的第几个星期
/// 指示年的第一周是第一个在指定的周首日前包含四天或更多天的周。值为 2。
/// </summary>
/// <param name="date">日期</param>
/// <param name="firstDayOfWeek">表示一周的第一天的星期值(枚举值)</param>
/// <returns>周数</returns>
public int GetWeekOfYearByFirstFourDayWeek(DateTime date, DayOfWeek firstDayOfWeek)
{
    System.Globalization.GregorianCalendar gc = new System.Globalization.GregorianCalendar();
    int weekIndex = gc.GetWeekOfYear(date, System.Globalization.CalendarWeekRule.FirstFourDayWeek, firstDayOfWeek);
    return weekIndex;
}
GarsonZhang www.yesdotnet.com

 

 

 

 

 

 

 

 

版权声明:本文为YES开发框架网发布内容,转载请附上原文出处连接
YES开发框架
评论列表

发表评论

评论内容
昵称:
关联文章

C#日期操作-星期(week)相关
C#根据年份和第几个星期,获得这个星期日期范围
C# 时间戳、随机数相关操作
C# Newtonsoft日期格式化处理
C#操作 配置文件*.ini
C# Enum枚举操作
C#计算两个日期之间的整月
硬件相关说明
C#使用SharpZipLib进行压缩文件(*.rar,*.zip)操作,压缩和解压
YESWin开发框架权限设计相关表结构说明
iNeuOS工业互联网操作系统,增加算法分析平台,包括快速傅里叶变换、包络分析、倒频谱和自相关等算法
C# 使用Newtonsoft对象转JSON字符串的时候日期类型的处理
C#的进化——C#发展史、C#1.0-10.0语法系统性梳理、C#与JAVA的对比
智能收款播报机 对接操作说明
窗体自定义权限操作按钮
SQL中根据日期范围生成所有日期数据,批量生成日期
自定义表格操作按钮 GridControlEmbeddedNavigator
编辑窗体中关联赋值操作
使用Hot Chocolate和.NET 6构建GraphQL应用(2) —— 实体相关功能实现
ag-grid内容格式化显示 日期格式化