mysql里用的: SELECT YEARWEEK('2016-01-03',7) 如返回201552
joda Time里,再去解析这个串,推算周一和周日的时间。
String ddd = row.getDateStr(); DateTime dt = DateTime.parse(ddd, DateTimeFormat.forPattern("xxxxww")); String xx = dt.toString(DateTimeFormat.forPattern("yyyyMMdd")); System.out.println(xx);
dt = dt.dayOfWeek().withMaximumValue(); xx = dt.toString(DateTimeFormat.forPattern("yyyyMMdd")); System.out.println(xx);
-------------------------------- 结果: 第一周都没问题, 最后一周,有时有问题,有时没问题。
如201552,joda的结果为: 20151221 20151227
如201553,joda的结果为: 20151228 20160103
而mysql里,2016-01-03认为是201552, 因为YEARWEEK,第二个参数用的是7,即从第一个周一,认为是第一周。 而joda,不是这样的,貌似1号开始就算第一周??
而201652,joda的结果为: 20161226 -20170101 结果又一样,伤不起~ ----------------------------------- 最后没办法,在sql里 group by YEARWEEK(xxx,7)后,select一个min(xxx)出来, 然后java里用这个日期,找周一和周日,就OK了。
管它第几周,关键要一致
|