获取给定日期的周数c#

时间:2014-12-30 17:47:47

标签: c# asp.net date cultureinfo

我尝试过搜索一个解决方案,该解决方案为日期值提供了正确的周数。
link1link2link3
按照上述链接中的方法,但是对于2014年12月30日的日期,我将周数作为53.但它是2015年的第1周。
我尝试了以下方法来获取特定日期的年份周数。

private int GetWeekNumberOfTheYear() {
var currentCulture = CultureInfo.CurrentCulture;
// option 1 
var weekNo = currentCulture.Calendar.GetWeekOfYear(DateTime.Now,currentCulture.DateTimeFormat.CalendarWeekRule, currentCulture.DateTimeFormat.FirstDayOfWeek);
// option 2 
var weekNo = CultureInfo.InvariantCulture.Calendar.GetWeekOfYear(DateTime.Now, CalendarWeekRule.FirstDay, DayOfWeek.Monday);
return weekNo; }

上面的方法是否正确,以53号作为周数返回,或者它应该是1?
上面的代码中是否有任何错误。建议请。 编辑:

发现许多搜索指定,2014年12月29日至2015年1月4日为2015年第1周 所以我的困惑是本周必须被视为第53周或第1周。

http://week-number.net/calendar-with-week-numbers-2014.html
http://www.epochconverter.com/date-and-time/weeknumbers-by-year.php

1 个答案:

答案 0 :(得分:5)

如果您正在寻找ISO-8601周工作周,您可以使用我的Noda Time项目:

var date = new LocalDate(2014, 12, 30);
var week = date.WeekOfWeekYear; // 1
var weekYear = date.WeekYear; // 2015

可以<{1}}通过LocalDateDateTime获得LocalDateTime,但理想情况下,您可以通过您的广泛使用Noda时间项目。 (无论如何,这就是我希望你能获得最大利益的方式。)