C# 计算从一个日期到另一个日期的周数

C# 计算从一个日期到另一个日期的周数,c#,date,dayofweek,C#,Date,Dayofweek,我必须根据日期计算周数。这可能很容易,我是这样做的(感谢另一篇帖子): public static int GetCurrentWeekNumber(日期时间) { DayOfWeek day=CultureInfo.InvariantCulture.Calendar.GetDayOfWeek(时间); 如果(天>=星期一和星期日 编辑:(感谢评论) 请链接到另一个SO帖子。从星期二到下星期三的可能重复,确定吗?这是一个8天的工作周。抱歉,这是一个输入错误,正确的范围是从当前星期四到下星期三。

我必须根据日期计算周数。这可能很容易,我是这样做的(感谢另一篇帖子):

public static int GetCurrentWeekNumber(日期时间)
{
DayOfWeek day=CultureInfo.InvariantCulture.Calendar.GetDayOfWeek(时间);
如果(天>=星期一和星期日
编辑:(感谢评论)


请链接到另一个SO帖子。从星期二到下星期三的可能重复,确定吗?这是一个8天的工作周。抱歉,这是一个输入错误,正确的范围是从当前星期四到下星期三。在运行时,您将得到一个
invalidoOperationException
,因为如果不克隆实例,则该实例是只读的。@TimSchmelter Point采取,所以让我们克隆它:)它也没有考虑到这一点:“计算星期二到下星期三的周数(包括)”虽然那将是一周8天。我不确定OP是否真的想要它。没错,我的意思是,这是一个打字错误thursday@user2754599:OP使用的方法无法通过将
DateTimeFormat.FirstDayOfWeek
更改为所需日期立即生效。此外,如果要更改
InvariantCulture
FirstDayOfWeek
,请执行以下操作:构造函数没有帮助。您可以使用
Clone
var culture=(CultureInfo)CultureInfo.InvariantCulture.Clone();culture.DateTimeFormat.FirstDayOfWeek=weekStart;
public static int GetCurrentWeekNumber(DateTime time)
{
    DayOfWeek day = CultureInfo.InvariantCulture.Calendar.GetDayOfWeek(time);
    if (day >= DayOfWeek.Monday && day <= DayOfWeek.Wednesday)
    {
        time = time.AddDays(3);
    }
    return CultureInfo.InvariantCulture.Calendar.GetWeekOfYear(time, CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday);
}
CultureInfo.DateTimeFormat.FirstDayOfWeek = DayOfWeek.Tuesday;
CultureInfo co = new new CultureInfo("en-US", true);
co.DateTimeFormat.FirstDayOfWeek = DayOfWeek.Tuesday;