ฉันมีปัญหาในการรีเซ็ตชั่วโมงใน Java สำหรับวันที่กำหนดฉันต้องการตั้งเวลาเป็น 00:00:00 น.
นี่คือรหัสของฉัน:
/**
* Resets milliseconds, seconds, minutes and hours from the provided date
*
* @param date
* @return
*/
public static Date trim(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.set(Calendar.MILLISECOND, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.HOUR, 0);
return calendar.getTime();
}
ปัญหาคือบางครั้งเวลาเป็น12:00:00
และบางครั้งก็เป็นเช่นนั้น00:00:00
และเมื่อฉันสอบถามฐานข้อมูลสำหรับเอนทิตีที่ถูกบันทึกไว้07.02.2013 00:00:00
และเวลาของเอนทิตีจริงที่ถูกจัดเก็บคือ12:00:00
แบบสอบถามล้มเหลว
รู้แล้ว12:00:00 == 00:00:00
!
ฉันใช้ AppEngine นี่เป็นข้อบกพร่องของ appengine ปัญหาหรือปัญหาอื่น ๆ หรือไม่? หรือไม่ขึ้นอยู่กับอย่างอื่น?
java.util.Date
, java.util.Calendar
และjava.text.SimpleDateFormat
ตอนนี้มรดกแทนที่โดยjava.timeชั้นเรียนที่สร้างขึ้นใน Java 8 และ Java 9 โปรดดูที่การสอนโดยออราเคิล
calendar.set(Calendar.HOUR_OF_DAY, 0);
เพื่อวัตถุประสงค์ของฉันมันได้ผลดี