получить на следующий день java.sql.Date - PullRequest
4 голосов
/ 15 сентября 2011

У меня есть объект Date (java.sql.Date).Мне нужно получить 12 ночью этого дня.Таким образом, я могу создать период времени от текущего времени до конца дня.

Как рассчитать это время с помощью java.sql.Date.Пожалуйста, пришлите мне пример.

Ответы [ 4 ]

10 голосов
/ 15 сентября 2011

Использование 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());
7 голосов
/ 15 сентября 2011

В идеале, используйте 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 везде ... тогда как я подозреваю, что вы хотите полночь местное время , и в этом случае вам нужно будет указать часовой пояс. Также обратите внимание, что полночь не всегда происходит каждый день во всех часовых поясах из-за перехода на летнее время - приведенный выше код даст вам начало дня.

2 голосов
/ 05 апреля 2013

Используйте следующий код:

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);
0 голосов
/ 15 сентября 2011

это, вероятно, не самый хороший способ, но ИМХО, это относительно легко понять.Он создает новый полуночный объект 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 );        
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...