2016-07-25 4 views
0

У меня есть 2 строки Str1: 2016-7-25.15.38. 32. 0 (Это то, что я получаю от БД) String2: 25 июля 2016 г. 3:19 (этот я написал программу для чтения из метки времени электронной почты)Как конвертировать два разных формата в формат даты и найти их отличия в JSP/JAVA

Как преобразовать эти 2 строки в формат даты и найти их differnce вовремя .. Помощь Pls. Ive прошел так много страниц в SO и google, но ничего не получал

+0

2016-7-25.15.38. 32. 0 и 25 июля 2016 3:19 вечера оба являются java.sql.Timestamps? –

+0

Вы также можете использовать DateUtils – Bhavesh

ответ

0

Как преобразовать эти 2 строки в формат даты

Использование Java 8, вы бы разобрать их, как это:

ZoneId zoneId = ZoneId.systemDefault(); 
ZonedDateTime dt1 = ZonedDateTime.parse("2016-7-25.15.38. 32. 0", 
      DateTimeFormatter.ofPattern("uuuu-M-d.H.m. s. 0").withZone(zoneId)); 
ZonedDateTime dt2 = ZonedDateTime.parse("July 25, 2016 3:19 PM", 
      DateTimeFormatter.ofPattern("MMMM d, uuuu h:mm a").withZone(zoneId)); 

Использование нестандартного отступа для выравнивания строки форматирования с помощью v для сравнения.

Код: ZonedDateTime поэтому для летнего времени будет обработана правильно.


и найти их разницу во времени

Getting разницу во времени является то достаточно легко, используя until() или between():

long seconds = dt1.until(dt2, ChronoUnit.SECONDS); 
long seconds = ChronoUnit.SECONDS.between(dt1, dt2); 

Они одинаковы. Используйте то, что вам больше нравится.


Если вы печатаете значения выше, вы получите (я нахожусь в США часового пояса Восточного):

2016-07-25T15:38:32-04:00[America/New_York] 
2016-07-25T15:19-04:00[America/New_York] 
-1172 
+0

Что делать, если он не использует java8? он не отметил этот вопрос под «java 8»? Тогда как у вас появилась эта идея? –

-1

Сначала вам нужно разобрать эти две строки на объекты Date. Вы можете использовать класс SimpleDateFormat для разбора. Когда у вас есть два объекта Data, вы можете легко получить разницу в датах.

+0

Вопрос задан * «Как преобразовать эти 2 строки в формат даты и найти их разницу во времени» *. Ответ «вам нужно разобрать» и «вы легко можете получить разницу по дате» вряд ли полезен. * Отображение *, как это сделать, было бы полезным ответом. – Andreas

-1

1. Преобразовать java.sql.Timestamp в java.util.Date

Date startDate = new Date(startTimestamp.getTime()); 
Date endDate= new Date(endTimestamp.getTime()); 

2.You может найти разницу времени с помощью TimeUnit перечисления, как показано ниже.

Date startDate = // Set start date 
Date endDate = // Set end date 

long duration = endDate.getTime() - startDate.getTime(); 

long diffInSeconds = TimeUnit.MILLISECONDS.toSeconds(duration); 
long diffInMinutes = TimeUnit.MILLISECONDS.toMinutes(duration); 
long diffInHours = TimeUnit.MILLISECONDS.toHours(duration); 

и так далее ..

+0

Откуда у вас возникла идея, что значения являются объектами Timestamp, когда вопрос говорит «У меня есть 2 строки» * и продолжает спрашивать * «Как преобразовать эти 2 строки в формат даты» *? – Andreas

+0

Спасибо за комментарий @ Andreas, я получил идею из формата этих строк 2016-7-25.15.38. 32. 0 и предположил, что это временная отметка –

0

Я бы просто использовать Oracle, чтобы выяснить разницу. Это довольно просто:

выбрать to_date ('2016-07-25.15.38.32', 'yyyy-mm-dd.hh24.mi.ss') - to_date ('25 июля 2016 3:19 PM', ' Месяц dd, yyyy hh: mi PM ') от двойного

Смежные вопросы