[英]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.