簡體   English   中英

如何在C#中基於當前日期獲取前一周的編號?

[英]How to get a previous week number based on current date in c#?

我想在c#中獲取上一年的前一周的數量。 例如,今天是2015年的第1周,而我想獲得最后一周,就像2014年的第52周一樣。

目前我的代碼是

var weekNo = currentCulture.Calendar.GetWeekOfYear(
             DateTime.Now.Date,
             currentCulture.DateTimeFormat.CalendarWeekRule,
             currentCulture.DateTimeFormat.FirstDayOfWeek);

它返回第1周。我有一個循環,該循環曾經從第1周運行到weekNo-1以獲取去年的數據,但是現在weekNo-1返回0,而我希望它返回52。

所以應該是這樣的

int lastweekNo = lastWeek(datetime.today);  //returns 52 for today's date, 1 for next Monday's date,..

讓我知道如何實現這一目標。 任何想法將不勝感激。

謝謝。

如果這給您當前的星期數:

currentCulture.Calendar.GetWeekOfYear(
    DateTime.Now.Date,
    currentCulture.DateTimeFormat.CalendarWeekRule,
    currentCulture.DateTimeFormat.FirstDayOfWeek);

這不給您前一周的號碼嗎?

currentCulture.Calendar.GetWeekOfYear(
    DateTime.Now.AddDays(-7).Date,
    currentCulture.DateTimeFormat.CalendarWeekRule,
    currentCulture.DateTimeFormat.FirstDayOfWeek);

要獲取前一周的星期數,只需獲取七天前一天的星期數:

var weekNo = currentCulture.Calendar.GetWeekOfYear(
         DateTime.Now.Date.AddDays(-7),
         currentCulture.DateTimeFormat.CalendarWeekRule,
         currentCulture.DateTimeFormat.FirstDayOfWeek);

我想獲取上一年的前一周數

目前尚不清楚什么是“上一年的前一周”。

今天是2015年的第1周,我想獲取最后一周,就像2014年的第52周一樣

要獲取上一年的最后一周的編號:

GetWeekOfYear(new DateTime(DateTime.Now.Year - 1, 12, 31), … )

它返回第1周。我有一個循環,該循環曾經從第1周運行到weekNo-1以獲取去年的數據,但是現在weekNo-1返回0,而我希望它返回52。

因此,如果您的循環是從1week - 1 ,那么如果week的值為1 ,那么它根本不會執行是正確的。 現在,您不能使用DateTime.Now ,沒有任何進一步的限制,假定星期數將與您嘗試使用的年份相對應。

假設您將星期一作為一周的第一天。

 DateTime sundayOfLastWeek = DateTime.Now.Date.AddDays(-(int)DateTime.Now.Date.DayOfWeek);

 MessageBox.Show(GetIso8601WeekOfYear(sundayOfLastWeek).ToString());

GetIso8601WeekOfYear

public static int GetIso8601WeekOfYear(DateTime time)
        {

            DayOfWeek day = CultureInfo.InvariantCulture.Calendar.GetDayOfWeek(time);
            if (day >= DayOfWeek.Monday && day <= DayOfWeek.Wednesday)
            {
                time = time.AddDays(3);
            }

            // Return the week of our adjusted day
            return CultureInfo.InvariantCulture.Calendar.GetWeekOfYear(time, CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday);
        } 

上面的代碼來自此鏈接

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM