[英]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。
因此,如果您的循環是從1
到week - 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.