如何根据 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);
第 return 第 1 周。我有一个循环,它曾经从第 1 周运行到 weekNo - 1 获取去年的数据,但现在 weekNo - 1 returns 0 我希望它成为 return 52。
所以,应该是这样的,
int lastweekNo = lastWeek(datetime.today); //returns 52 for today's date, 1 for next Monday's date,..
让我知道我怎样才能做到这一点。任何想法将不胜感激。
谢谢。
I want to get the number of previous week of previous year
不清楚什么是“前一年的前一周”。
today is week 1 of 2015 and I want to get the last week as in week number 52 of year 2014
获取上一年最后一周的数字:
GetWeekOfYear(new DateTime(DateTime.Now.Year - 1, 12, 31), … )
And it returns week 1. I have a loop which used to run from week number 1 to weekNo - 1 to get the data of last year but now weekNo - 1 returns 0 and I want it to return 52.
因此,如果您的循环是从 1
到 week - 1
,那么如果 week
的值为 1
,它不会在全部。您不能接受 DateTime.Now
,并且在没有任何进一步限制的情况下,假设周数与您尝试使用的年份相对应。
要获取前一周的周数,只需获取7天前那一天的周数即可:
var weekNo = currentCulture.Calendar.GetWeekOfYear(
DateTime.Now.Date.AddDays(-7),
currentCulture.DateTimeFormat.CalendarWeekRule,
currentCulture.DateTimeFormat.FirstDayOfWeek);
如果这为您提供当前周数:
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);
假设您使用星期一作为一周的第一天。
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);
}
The above code is taken from this link
我想在 C# 中获取前一年的前一周的数字。例如,今天是 2015 年的第 1 周,我想获得 2014 年第 52 周的最后一周。
目前我的代码是,
var weekNo = currentCulture.Calendar.GetWeekOfYear(
DateTime.Now.Date,
currentCulture.DateTimeFormat.CalendarWeekRule,
currentCulture.DateTimeFormat.FirstDayOfWeek);
第 return 第 1 周。我有一个循环,它曾经从第 1 周运行到 weekNo - 1 获取去年的数据,但现在 weekNo - 1 returns 0 我希望它成为 return 52。
所以,应该是这样的,
int lastweekNo = lastWeek(datetime.today); //returns 52 for today's date, 1 for next Monday's date,..
让我知道我怎样才能做到这一点。任何想法将不胜感激。
谢谢。
I want to get the number of previous week of previous year
不清楚什么是“前一年的前一周”。
today is week 1 of 2015 and I want to get the last week as in week number 52 of year 2014
获取上一年最后一周的数字:
GetWeekOfYear(new DateTime(DateTime.Now.Year - 1, 12, 31), … )
And it returns week 1. I have a loop which used to run from week number 1 to weekNo - 1 to get the data of last year but now weekNo - 1 returns 0 and I want it to return 52.
因此,如果您的循环是从 1
到 week - 1
,那么如果 week
的值为 1
,它不会在全部。您不能接受 DateTime.Now
,并且在没有任何进一步限制的情况下,假设周数与您尝试使用的年份相对应。
要获取前一周的周数,只需获取7天前那一天的周数即可:
var weekNo = currentCulture.Calendar.GetWeekOfYear(
DateTime.Now.Date.AddDays(-7),
currentCulture.DateTimeFormat.CalendarWeekRule,
currentCulture.DateTimeFormat.FirstDayOfWeek);
如果这为您提供当前周数:
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);
假设您使用星期一作为一周的第一天。
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);
}
The above code is taken from this link