Как удалить часовой пояс при конвертации из даты в дату и время - PullRequest
0 голосов
/ 12 сентября 2018

У меня есть дата, полученная из базы данных, и я хочу преобразовать ее в DateTime и установить начало дня.Я пишу это ниже:

Date fromDate = studentDateJoin.getDate();
//result: fromDate = Mon Jan 01 00:00:02 ICT 2018
//convert to DateTime 
DateTime newDate = new DateTime(fromDate);

Но когда я конвертирую, добавьте часовой пояс после конвертации.newDate выглядит как:

newDate = 2018-01-01T14:13:04.574Z+7

У меня есть вопрос: Как преобразовать его в начало дня и удалить часовой пояс: Пример, который я хочу преобразовать, выглядит следующим образом:

 //Convert it begin day and remove time zone
 newDate = 2018-01-01T00:00:00.00;

Как преобразоватьначать день и удалить часовой пояс: Thankyou

1 Ответ

0 голосов
/ 12 сентября 2018

ОБНОВЛЕНИЕ: Добавлена ​​версия Joda-Time, поскольку вопрос был изменен с java-8 на jodatime.


Если у вас Joda-Time DateTime, используйте toLocalDate() и toLocalDateTime(...):

DateTime dateTime = new DateTime(2018, 1, 1, 14, 13, 04, 574);
System.out.println(dateTime);
LocalDate localDate = dateTime.toLocalDate();
System.out.println(localDate);
LocalDateTime localDateTime = localDate.toLocalDateTime(LocalTime.MIDNIGHT);
System.out.println(localDateTime);
2018-01-01T14:13:04.574-05:00
2018-01-01
2018-01-01T00:00:00.000

Если у вас есть «Дата, полученная из базы данных», то есть a java.sql.Date, тогда используйте toLocalDate() и atStartOfDay():

java.sql.Date sqlDate = new java.sql.Date(118, 0, 1);
System.out.println(sqlDate);
LocalDate localDate = sqlDate.toLocalDate();
System.out.println(localDate);
LocalDateTime localDateTime = localDate.atStartOfDay();
System.out.println(localDateTime);
2018-01-01
2018-01-01
2018-01-01T00:00

Если у вас есть java.sql.Timestamp, используйте toLocalDateTime() и truncatedTo(...):

java.sql.Timestamp sqlTimestamp = new java.sql.Timestamp(118, 0, 1, 14, 13, 04, 574000000);
System.out.println(sqlTimestamp);
LocalDateTime localDateTime = sqlTimestamp.toLocalDateTime();
System.out.println(localDateTime);
localDateTime = localDateTime.truncatedTo(ChronoUnit.DAYS);
System.out.println(localDateTime);
2018-01-01 14:13:04.574
2018-01-01T14:13:04.574
2018-01-01T00:00

Если у вас есть java.util.Date, используйте toInstant(), atZone(...), toLocalDate() и atStartOfDay()

java.util.Date utilDate = new java.util.Date(118, 0, 1, 14, 13, 04);
System.out.println(utilDate);
Instant instant = utilDate.toInstant();
System.out.println(instant);
ZonedDateTime zonedDateTime = instant.atZone(ZoneId.systemDefault());
System.out.println(zonedDateTime);
LocalDateTime localDateTime = zonedDateTime.toLocalDate().atStartOfDay();
System.out.println(localDateTime);
Mon Jan 01 14:13:04 EST 2018
2018-01-01T19:13:04Z
2018-01-01T14:13:04-05:00[America/New_York]
2018-01-01T00:00
...