Как преобразовать дату отметки времени в java .util дату (гггг-мм-дд) в java - PullRequest
0 голосов
/ 17 февраля 2020

Я получаю дату от Oracle в Timestamp, но мне нужно преобразовать ее в этот формат 2020-02-17 (гггг-мм-дд), но в настоящее время в почтальоне я получаю дату как "2020-02-17T09:40:37.850+0000" в этом формате.
Любая помощь по этому вопросу будет очень признателен

Ответы [ 3 ]

2 голосов
/ 17 февраля 2020

Вы можете легко преобразовать java.sql.Timestamp в java.time.LocalDate и получить дату String, отформатировав LocalDate следующим образом:

public static void main(String[] args) {
    // just a timestamp stub that takes "now"
    java.sql.Timestamp ts = java.sql.Timestamp.from(Instant.now());
    // convert it to a modern date object
    LocalDate justDate = ts.toLocalDateTime().toLocalDate();
    // print it using a suitable formatter
    System.out.println(justDate.format(DateTimeFormatter.ISO_LOCAL_DATE));
}

Выход (сегодня) равен

2020-02-17

Вам просто нужно Java 8 или выше для этого или импортировать библиотеку backport .

РЕДАКТИРОВАТЬ

Если вам не нужен String, а java.util.Date, сделайте это только с Instant, например:

public static void main(String[] args) {
    // just a timestamp stub that takes "now"
    Instant now = Instant.now();
    Timestamp ts = Timestamp.from(now);
    // create an Instant from the Timestamp
    Instant timestampInstant = ts.toInstant();
    // and then create a Date out from that Instant
    java.util.Date creationDate = java.util.Date.from(now);

    // do something with the Date here...
}

Но, пожалуйста, рассмотрите возможность использования java.time где это возможно, что может быть в вашем доменном классе ...

1 голос
/ 17 февраля 2020
 private String  getZonedDateTime(String startTime){
  // input -> startTime: 2020-02-17T09:40:37.850+0000
  // output -> 2020-02-17
  return ZonedDateTime.parse(startTime, DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssXXX"))
                .format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
 }

Просто передайте имеющуюся строку даты и получите ее в нужном формате.

0 голосов
/ 17 февраля 2020

На этот вопрос дан ответ здесь

И что именно вы хотите, чтобы отобразить дату в этом формате или сохранить в этом формате.

Если вы хотите отобразить дата с (гггг-мм-дд)

String dateFormated = new SimpleDateFormat("yyyy-MM-dd").format(myTimestamp);
System.out.println(dateFormated);

Если вы хотите сохранить дату в этом формате, вы можете попробовать сделать это:

try {
     SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd);
     String dateFormated = dateFormat.format(myTimestamp);
     Date parsedDate = dateFormat.parse(dateFormated);
     Timestamp timestamp = new java.sql.Timestamp(parsedDate.getTime());
} catch(Exception e) { 

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...