Tha*_*ham 1 java jpa date jodatime
如果我要给出一个特定的java.util.Date,我该如何生成该给定日期的开始和结束.例如,我的日期是August 25, 2011
,那么我的开始日期是August 25, 2011 00 00 00
,我的日期结束August 25, 2011 23 59 59
背景 :(如果你想知道为什么我问这个问题,请阅读下面的内容)
我使用JPA映射date
到我的MySql数据库.我希望date
有时间,所以我用TemoporalType.TIMESTAMP
@Temporal(TemporalType.TIMESTAMP)
private Date dateProcess; //java.util.Date
Run Code Online (Sandbox Code Playgroud)
我需要查询给定特定日期的所有数据,并且由于date
存储如上,我需要一个日期范围来实现我想要的.
我的游戏计划是转换java.util.Date
为JodaTime#DateTinme
,然后在那里构建开始和结束日期,并将其转换回来,以便我可以作为参数传递给JPQL.但似乎JodaTime非常不可变,我似乎无法在任何地方看到一个setter方法.
A java.util.Date
表示即时,不参考时区或日历.根据观察者的时区,同一时刻将有一个非常不同的开始/结束日.
你可以这样做:
DateTime dateTime = new DateTime(date.getTime(), timeZone);
LocalDate localDate = dateTime.ToLocalDate();
DateTime startOfDay = localDate.toDateTimeAtStartOfDay(timeZone);
DateTime startOfNextDay = localDate.plusDays(1).toDateTimeAtStartOfDay(timeZone);
Run Code Online (Sandbox Code Playgroud)
从最后两个变量中,您可以java.util.Date
根据需要返回值.通常他们都会是午夜,但他们可能不是.
请注意,您应该以独占方式使用第二天的开头,而不是以包容的方式使用当天的最后一天,以避免错过诸如2011年8月25日23:59:59.500之类的值...
归档时间: |
|
查看次数: |
3308 次 |
最近记录: |