Tag: week number

Java 8:从纪元时间开始获取周数

给定LocalDate我想转换为自纪元以来的周数 一种方法是: LocalDate date = datePicker.getValue(); // input from your date picker Locale locale = Locale.US; int weekOfYear = date.get(WeekFields.of(locale).weekOfWeekBasedYear()); And X = find weeks since Epoch to prevYear And then result = X + weekOfYear 虽然我们可以找到“自纪元以来的周数”,但是有没有使用Java 8找到它的干净解决方案? 更新:即使上面的解决方案不会工作一周(总是从星期日开始)可能跨越两年

Java和多SQL RDBMS之间的一周计算差异

我必须做一些报告,并且必须在Java和MySQL的任何日期计算周,但它们有不同的算法。 首先,请注意,通过一些方法,在某一年结束的某些日子里,是明年的第一周。 示例:2012-12-31是2013年的第1周(我不记得确切的年份,但它就是这样)。 所以我必须计算一个约会的正确的一周 在Java中 ,它基于2个标准取决于区域设置: 一周的第一天(周日或周一) 第一周的最短日期(1或4) Calendar cal = Calendar.getInstance(); int javaWeek = cal.get(Calendar.WEEK_OF_YEAR); int weekYear = cal.getWeekYear(); 在MySQL中 ,它基于2个标准依赖于模式 (0到7): 一周的第一天(星期日或星期一)(Java中也是如此) 第一周的最小天数是4或第一周包含一周的第一天 SELECT WEEK(‘2012-12-12’, 1); SELECT YEARWEEK(‘2012-12-12’, 1); 在MySQL中,有些模式会计算一周有奇怪的结果,例如,一年有0周只有1天,其他几周有7天(我认为第1周真的是第一周,第0周是前周或某事)。 我会忽略这些模式 场景是:我在Java中计算了我的系统区域设置(带有设置的区域设置: getFirstDayOfWeek()==SUNDAY和getMinimalDaysInFirstWeek==1 )的日期基础列表的周,我想在MySQL中使用相同的结果进行计算 但我在MySQL中尝试所有8种模式,没有匹配。 我失败了,因为在MySQL中没有第一周最小日的模式计算基础是1(只有一些模式有4),所以我手动设置setMinimalDaysInFirstWeek(4)并且MySQL中的模式6与Java中的结果匹配 (我必须编写测试,比较Java和MySQL中2年内每天的结果) 所以我的解决方案是,我必须修复 setMinimalDaysInFirstWeek(4) ,如果getFirstDayOfWeek()是MONDAY,我在MySQL中选择模式3,如果getFirstDayOfWeek()是SUNDAY,我在MySQL中选择模式6。 我认为这只是一个临时解决方案而且非常奇怪。 还有一个问题,我真的害怕如果我的系统从MySQL变为其他RDBMS,它将有其他方法而我无法处理所有这些(Oracle中的示例没有WEEKfunction)。 那么有什么方法让calc周满足很多RDBMS? 我有一个想法是在一个平台(Java或MySQL)中的calc周,然后将结果传递给另一个: 如果从Java传递到MySQL,我将结果传递给查询字符串,或者构建一个包含我的结果的表 如果从MySQL传递到Java,我必须编写一个从Java调用它的过程,并且必须解决问题“找到计算方法满足许多RDBMS的方法” 但我必须计算一个大量的日期,这些都不满足我,任何人都有想法解决我的问题?