Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java.util.Date/JodaTime:给定java.util.Date,生成给定日期的开始和结束_Java_Date_Jpa_Jodatime - Fatal编程技术网

java.util.Date/JodaTime:给定java.util.Date,生成给定日期的开始和结束

java.util.Date/JodaTime:给定java.util.Date,生成给定日期的开始和结束,java,date,jpa,jodatime,Java,Date,Jpa,Jodatime,如果给我一个特定的java.util.Date,我如何生成给定日期的开始和结束。例如,我的日期是2011年8月25日,那么我的开始日期是2011年8月25日,我的结束日期是2011年8月25日 背景:(如果你想知道我为什么问这个问题,请阅读下面的内容) 我使用JPA将date映射到MySql数据库,如下所示。我希望date也有时间,所以我使用TemoporalType.TIMESTAMP @Temporal(TemporalType.TIMESTAMP) private Date datePro

如果给我一个特定的java.util.Date,我如何生成给定日期的开始和结束。例如,我的日期是2011年8月25日,那么我的开始日期是2011年8月25日,我的结束日期是2011年8月25日

背景:(如果你想知道我为什么问这个问题,请阅读下面的内容)

我使用JPA将
date
映射到MySql数据库,如下所示。我希望
date
也有时间,所以我使用
TemoporalType.TIMESTAMP

@Temporal(TemporalType.TIMESTAMP)
private Date dateProcess; //java.util.Date
我需要查询给定特定日期的所有数据,因为
date
如上所述存储,所以我需要一个日期范围来实现我想要的


我的游戏计划是将
java.util.Date
转换为
JodaTime#DateTinme
,然后在那里构建开始和结束日期,并将其转换回,以便我可以作为参数传递给JPQL。但JodaTime似乎是不可变的,我在任何地方都看不到setter方法

我相信您想要的类型是
DateMidnight
。创建一个新的
DateMidnight
并将有问题的
DateTime
传递给它,它将采用当天上午午夜的日期。然后,您还可以使用
plusDays()
函数添加1天以获得结束时间。

我相信您需要的类型是
DateMidnight
。创建一个新的
DateMidnight
并将有问题的
DateTime
传递给它,它将采用当天上午午夜的日期。然后,您还可以使用
plusDays()
函数添加一天来获取结束时间。

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);
如果需要,可以从最后两个变量返回到
java.util.Date
值。通常都是午夜,但可能不是


请注意,您应该以独占方式使用第二天的开始,而不是以包含方式使用当前一天的最后一秒,以避免丢失值,例如2011年8月25日23:59:59.500…

A
java.util.Date
表示时间上的一个瞬间,不参考时区或日历。根据观察者所在时区的不同,同一时刻的开始/结束时间会有很大的不同

Date date; // your date

Calendar calendar = Calendar.getInstance();
calendar.setTime(date);

calendar.set(Calendar.HOUR, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
Date startDate = calendar.getTime();

calendar.set(Calendar.HOUR, 23);
calendar.set(Calendar.MINUTE, 59);
calendar.set(Calendar.SECOND, 59);
Date endDate = calendar.getTime();
你可以这样做:

DateTime dateTime = new DateTime(date.getTime(), timeZone);
LocalDate localDate = dateTime.ToLocalDate();

DateTime startOfDay = localDate.toDateTimeAtStartOfDay(timeZone);
DateTime startOfNextDay = localDate.plusDays(1).toDateTimeAtStartOfDay(timeZone);
如果需要,可以从最后两个变量返回到
java.util.Date
值。通常都是午夜,但可能不是


请注意,您应该以独占方式使用第二天的开始,而不是以包含方式使用当前一天的最后一秒,以避免丢失值,例如2011年8月25日23:59:59.500…

我倾向于避免使用
DateMidnight
,因为并非每个时区的每一天都有午夜
LocalDate.toDateTimeAtStartOfDay
是一个更好的调用,我以前从未使用过。谢谢我倾向于避开DateMidnight,因为并非每个时区的每一天都有午夜
LocalDate.toDateTimeAtStartOfDay
是一个更好的调用,我以前从未使用过。谢谢假设系统时区是正确的。。。我还建议使用Joda Time作为更好的API…假设系统时区是正确的。。。我还建议使用Joda Time作为更好的API…
date.getDate()
,是
date
java.util.date
?如果是这样的话,Jon,
date.getDate()
?是不是应该是
date.getTime()
?@Harry:对不起,我的意思是
date.getTime()
-基本上是以毫秒为单位获取
长值的方法。非常感谢:)。我现在就试试。
date.getDate()
,是
date
那里的
java.util.date
?如果是这样的话,Jon,
date.getDate()
?是不是应该是
date.getTime()
?@Harry:对不起,我的意思是
date.getTime()
-基本上是以毫秒为单位获取
长值的方法。非常感谢:)。我现在就试试。
Date date; // your date

Calendar calendar = Calendar.getInstance();
calendar.setTime(date);

calendar.set(Calendar.HOUR, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
Date startDate = calendar.getTime();

calendar.set(Calendar.HOUR, 23);
calendar.set(Calendar.MINUTE, 59);
calendar.set(Calendar.SECOND, 59);
Date endDate = calendar.getTime();