我尝试过搜索一个解决方案,该解决方案为日期值提供了正确的周数。
link1,link2,link3
按照上述链接中的方法,但是对于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
答案 0 :(得分:5)
如果您正在寻找ISO-8601周工作周,您可以使用我的Noda Time项目:
var date = new LocalDate(2014, 12, 30);
var week = date.WeekOfWeekYear; // 1
var weekYear = date.WeekYear; // 2015
你可以<{1}}通过LocalDate
从DateTime
获得LocalDateTime
,但理想情况下,您可以通过您的广泛使用Noda时间项目。 (无论如何,这就是我希望你能获得最大利益的方式。)