2011-09-15 132 views
4

我有一個Date對象(java.sql.Date)。我需要在當天晚上得到12。所以我可以創建一個從當前時間到一天結束的時間段。獲得第二天java.sql.Date

我該如何用java.sql.Date來計算那段時間。請給我一個例子。

+0

你嘗試過與我能幫你什麼嗎?使用谷歌來獲得例子 – Amanpreet

回答

6

理想情況下,使用Joda Time這是一個更好的日期和時間API比在Java中。

java.sql.Date sqlDate = ...; 
LocalDate date = new LocalDate(sqlDate.getTime(), DateTimeZone.UTC); 
LocalDate tomorrow = date.plusDays(1); 

DateTime startOfDay = tomorrow.toDateTimeAtStartOfDay(DateTimeZone.UTC); 

java.sql.Date sqlTomorrow = new java.sql.Date(startOfDay.getMillis()); 

注意,這個假設UTC無處不在......而我懷疑你想午夜當地時間在這種情況下你需要指定的時區。另外請注意,由於夏令時間的原因,午夜並不總是在所有時區的每一天發生 - 上面的代碼將爲您提供一天的開始。

8

使用java.util.Calendar

java.sql.Date sqlDate = ...; 
Calendar cal = Calendar.getInstance(); 
cal.setTime(sqlDate); 
cal.add(Calendar.DAY_OF_YEAR,1); 
cal.set(Calendar.HOUR_OF_DAY, 0); 
cal.set(Calendar.MINUTE, 0); 
cal.set(Calendar.SECOND, 0); 
cal.set(Calendar.MILLISECOND, 0); 
java.sql.Date sqlTommorow = new java.sql.Date(cal.getTimeInMillis()); 
0

這可能不是最好的方式,但恕我直言,這是比較容易理解。 它的輸入日期創建一個新的午夜java.sql.Date對象「現在」

String DATE_FORMAT = "dd.MM.yyyy"; 
    //create a date sql.Date object 
    java.sql.Date now = new java.sql.Date(new java.util.Date().getTime()); 

    //create a date formatter 
    SimpleDateFormat sf = new SimpleDateFormat(DATE_FORMAT); 
    //get the midnight date by converting the object to a String and back to a Date object 
    java.util.Date midnightUtil = sf.parse(sf.format(now)); 
    //create a new java.sql.Date object and add one days worth of milliseconds; 
    java.sql.Date midnight = new java.sql.Date(midnightUtil.getTime() + 86400000);   
1

使用下面的代碼:

java.sql.Date now = new java.sql.Date(new java.util.Date().getTime()); 
java.sql.Date tomorrow= new java.sql.Date(now.getTime() + 24*60*60*1000);