Cum se convertește un Instant într-un format de dată? [duplicat] (Programare, Java, Data, Datetime, Java 8, Simpledateformat)

hari m a intrebat.

Pot să convertesc un java.util.Date într-un java.time.Instant (Java 8 și mai târziu) în acest fel:

Calendar cal = Calendar.getInstance();
cal.set(Calendar.HOUR_OF_DAY, 8);
cal.set(Calendar.MINUTE, 30);
Date startTime = cal.getTime();
Instant i = startTime.toInstant();

Poate cineva să mă anunțe despre convertirea acelui instantaneu în data cu o anumită dată & format de timp? adică 2015-06-02 8:30:00

Am trecut prin api, dar nu am putut găsi un răspuns satisfăcător.

Comentarii

  • Doriți un String ieșire cu yyyy-MM-dd H:m:s? –  > Por Blip.
  • Există vreun motiv special pentru a obține instantaneu din Calendar? și nu folosind LocalDate sau alte clase java.time? Dacă folosiți calendar, puteți utiliza Calendar.getTime() care va returna instanța Date. Pe care o puteți converti ulterior în orice format –  > Por Bilbo Baggins.
  • De fapt, de la client primesc doar obiectul instantaneu… acum trebuie să stochez data și ora instantaneu în baza de date. –  > Por hari m.
4 răspunsuri
Umberto Raimondi

Dacă doriți să convertiți un Instant într-un Date:

Date myDate = Date.from(instant);

Și atunci puteți folosi SimpleDateFormat pentru partea de formatare a întrebării dumneavoastră:

SimpleDateFormat formatter = new SimpleDateFormat("dd MM yyyy HH:mm:ss");
String formattedDate = formatter.format(myDate);

Comentarii

  • Utilizați DateTimeFormatter în loc de SimpleDateFormat deoarece nu este sigur pentru fire. M-am confruntat cu unele probleme în trecut din această cauză. Mai multe detalii aici –  > Por ms_27.
assylias

Un Instant este ceea ce spune: un anumit moment în timp – nu are noțiunea de dată și oră (ora din New York și Tokyo nu este aceeași la un moment dat).

Pentru a-l imprima ca dată/ora, trebuie mai întâi să decideți ce fus orar să folosiți. De exemplu:

System.out.println(LocalDateTime.ofInstant(i, ZoneOffset.UTC));

Aceasta va imprima data/ora în format iso: 2015-06-02T10:15:02.325

Dacă doriți un format diferit, puteți utiliza un formator:

LocalDateTime datetime = LocalDateTime.ofInstant(i, ZoneOffset.UTC);
String formatted = DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss").format(datetime);
System.out.println(formatted);

Saket Mittal

încercați Parsarea și formatarea

Luați un exempluParsarea

String input = ...;
try {
    DateTimeFormatter formatter =
                      DateTimeFormatter.ofPattern("MMM d yyyy");
    LocalDate date = LocalDate.parse(input, formatter);
    System.out.printf("%s%n", date);
}
catch (DateTimeParseException exc) {
    System.out.printf("%s is not parsable!%n", input);
    throw exc;      // Rethrow the exception.
}

Formatare

ZoneId leavingZone = ...;
ZonedDateTime departure = ...;

try {
    DateTimeFormatter format = DateTimeFormatter.ofPattern("MMM d yyyy  hh:mm a");
    String out = departure.format(format);
    System.out.printf("LEAVING:  %s (%s)%n", out, leavingZone);
}
catch (DateTimeException exc) {
    System.out.printf("%s can't be formatted!%n", departure);
    throw exc;
}

Rezultatul pentru acest exemplu, care tipărește atât ora de sosire, cât și ora de plecare, este următorul:

LEAVING:  Jul 20 2013  07:30 PM (America/Los_Angeles)
ARRIVING: Jul 21 2013  10:20 PM (Asia/Tokyo)

Pentru mai multe detalii, consultați această pagină-https://docs.oracle.com/javase/tutorial/datetime/iso/format.html

Murat Karagöz
Instant i = Instant.ofEpochSecond(cal.getTime);

Citiți mai multe aici și aici

Comentarii

  • de fapt, am nevoie de un obiect dată din instant. –  > Por hari m.
  • Răspunsul dvs. nu prezintă un șir de date formatat. –  > Por IgorGanapolsky.