我希望在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,..
让我知道如何实现这一目标。任何想法将不胜感激。
感谢。
答案 0 :(得分:7)
如果这给你当前的周数:
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);
答案 1 :(得分:1)
要获取前一周的周数,只需获取七天前一周的周数:
var weekNo = currentCulture.Calendar.GetWeekOfYear(
DateTime.Now.Date.AddDays(-7),
currentCulture.DateTimeFormat.CalendarWeekRule,
currentCulture.DateTimeFormat.FirstDayOfWeek);
答案 2 :(得分:0)
我想获得上一年的前一周的数量
目前尚不清楚“前一年的前一周”是什么。
今天是2015年第1周,我想在2014年第52周的最后一周获得
获取上一年的最后一周的数字:
GetWeekOfYear(new DateTime(DateTime.Now.Year - 1, 12, 31), … )
它返回第1周。我有一个循环,用于从第1周到第1周 - 1获取去年的数据,但现在weekNo - 1返回0,我希望它返回52。
因此,如果您的循环是从1
到week - 1
,那么在week
具有值1
的情况下,它是正确的,它没有&#39 ; t执行。您无法接受DateTime.Now
,并且在没有任何进一步限制的情况下,假设周数与您尝试使用的年份相对应。
答案 3 :(得分:0)
假设您使用星期一作为一周的第一天。
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);
}