c# – 来自Week和WeekYear的LocalDate
发布时间:2020-12-15 08:29:26 所属栏目:百科 来源:网络整理
导读:使用NodaTime库,如何根据周数和周WeekYear计算一周中第一天的LocalDate. 与此相反: var date = new LocalDate(2012,1,1);int weekYear = date.WeekYear; // 2011int weekNr = date.WeekOfWeekYear; // 52 像这样的假代码: var newDate = LocalDate.FirstDa
使用NodaTime库,如何根据周数和周WeekYear计算一周中第一天的LocalDate.
与此相反: var date = new LocalDate(2012,1,1); int weekYear = date.WeekYear; // 2011 int weekNr = date.WeekOfWeekYear; // 52 像这样的假代码: var newDate = LocalDate.FirstDayFromWeek(weekYear,weekNr); 解决方法
首先,您应该考虑如何构建相关的LocalDate – 如果您有WeekYear和WeekOfWeekYear,那么这是您在逻辑上拥有的所有信息.然后你可以从AtDidnight的LocalDate中获取一个LocalDateTime – 但是我会坚持使用LocalDate,直到你真的需要其他任何东西,因为这样你就可以合成更少的信息.
我不相信我们目前使这一点特别简单,说实话 – 虽然底层引擎支持足够的计算,我们可以相当容易地添加它. 如果不对API进行任何更改,我建议您最好使用以下内容: >在所需的年份内构建6月1日,这应该具有相同的WeekYear(我假设您正在使用ISO日历……) 所以类似于: public static LocalDate LocalDateFromWeekYearAndWeek(int weekYear,int weekOfWeekYear) { LocalDate midYear = new LocalDate(weekYear,6,1); LocalDate startOfWeek = midYear.Previous(IsoDayOfWeek.Monday); return startOfWeek.PlusWeeks(weekOfWeekYear - startOfWeek.WeekOfWeekYear); } 不是非常愉快或高效,但也不是太糟糕……如果你发现自己想要在WeekOfWeekYear和WeekYear上做很多工作,请提出你想要做的事情的功能请求. 编辑:作为更新,我们现在支持这个: LocalDate date = LocalDate.FromWeekYearWeekAndDay(year,week,IsoDayOfWeek.Monday); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |