我需要获得一个约会的周数。
我知道之前已经多次询问过,但这里的所有答案都是 对我来说没有用,因为他们返回了dotnet周数或iso 8601周数。
我需要的是更具挑战性 让我解释一下最简单的样本数据:
input date desired weeknumber
01-jan-2012 1
02-jan-2012 2
31-dec-2012 52
01-jan-2013 1
06-jan-2013 1
07-jan-2013 2
31-dec-2013 52
01-jan-2014 1
05-jan-2014 1
06-jan-2014 2
我希望这能说明我的需要 如果您在打印的日历上写周数,但第一周/上周分为1/52而不是53
在Google中搜索会返回很多像example of answer这样的答案,但我找不到这些答案会返回这些结果,所以我希望有人可以帮我解决这个问题,或者指出我正确的方向。
编辑:解释它的另一种方式是:
看看它就像你对另一个人说的那样,一年的最后一天,一个人会说这是第52周和一个人会说第1周的第一天。一个人永远不会说这是一周53.
对于02-jan-2012,一个人会说我们在今年的第2周,而不是在第1周
编辑:我终于说服了我的雇主,这不实际,甚至不可能。 这个帖子中的答案和评论是我用来说服的,所以你们所做的一切都很好地帮助了我
答案 0 :(得分:0)
我不确定我是否正确理解你的帖子,但也许这可能是一个解决方案:
var dates = new[]
{
new DateTime(2012, 1, 1),
new DateTime(2012, 1, 2),
new DateTime(2012, 12, 31),
new DateTime(2013, 1, 1),
new DateTime(2013, 1, 6),
new DateTime(2013, 1, 7),
new DateTime(2013, 12, 31),
new DateTime(2014, 1, 1),
new DateTime(2014, 1, 5),
new DateTime(2014, 1, 6),
};
var calendar = CultureInfo.CurrentCulture.Calendar;
foreach (var date in dates)
{
var day = calendar.GetDayOfYear(date);
var week = calendar.GetWeekOfYear(date, CalendarWeekRule.FirstDay, DayOfWeek.Monday);
week = week > 52 ? 52 : week;
Console.WriteLine($"{date.Date}: {day,3}: {week,3}");
}
答案 1 :(得分:0)