webentwicklung-frage-antwort-db.com.de

Konvertieren Sie das Java.util.date-Standardformat in Java in einen Zeitstempel

Das Standardformat von Java.util.date lautet ungefähr "Mon May 27 11:46:15 IST 2013". Wie kann ich diesen in einen Zeitstempel umwandeln und in Sekunden die Differenz zwischen derselben und der aktuellen Uhrzeit berechnen?

Java.util.Date date= new Java.util.Date();
Timestamp ts_now = new Timestamp(date.getTime());

Der obige Code gibt den aktuellen Zeitstempel an. Ich habe jedoch keine Ahnung, wie ich den Zeitstempel der obigen Zeichenfolge finden kann.

8
swateek

Sie können die Klasse Calendar zum Konvertieren von Date verwenden.

public long getDifference()
{
    SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd kk:mm:ss z yyyy");
    Date d = sdf.parse("Mon May 27 11:46:15 IST 2013");

    Calendar c = Calendar.getInstance();
    c.setTime(d);
    long time = c.getTimeInMillis();
    long curr = System.currentTimeMillis();
    long diff = curr - time;    //Time difference in milliseconds
    return diff/1000;
}
11
Rahul Bobhate

Beste 

String str_date=month+"-"+day+"-"+yr;
DateFormat formatter = new SimpleDateFormat("MM-dd-yyyy");
Date date = (Date)formatter.parse(str_date); 
long output=date.getTime()/1000L;
String str=Long.toString(output);
long timestamp = Long.parseLong(str) * 1000;
8
Kishore

Sie können DateFormat (Java.text. *) Verwenden, um das Datum zu analysieren:

DateFormat df = new SimpleDateFormat("EEE MMM dd kk:mm:ss z yyyy", Locale.ENGLISH);
Date d = df.parse("Mon May 27 11:46:15 IST 2013")

Sie müssen das Gebietsschema ändern, um es an Ihr eigenes anzupassen (hier erhalten Sie 10:46:15). Dann können Sie denselben Code verwenden, um ihn in einen Zeitstempel umzuwandeln.

0
Salem

Sie können verwenden

  long startTime = date.getTime() * 1000000;;
  long estimatedTime = System.nanoTime() - startTime;

Zeit in Nano zu bekommen.

Java Docs

0
nidhin

Java.time

Ich gebe die moderne Antwort. Die Klasse Timestamp war immer schlecht gestaltet, ein echter Hack über die bereits schlecht gestaltete Klasse Date. Beide Klassen sind längst überholt. Benutze sie nicht.

Wenn die Frage gestellt wurde, benötigen Sie ein Timestamp, um einen Zeitpunkt an die SQL-Datenbank zu senden. Seit JDBC 4.2 ist das nicht mehr der Fall. Angenommen, Ihre Datenbank benötigt ein timestamp with time zone (empfohlen für echte Zeitstempel), übergeben Sie ein OffsetDateTime.

Bevor wir das tun können, müssen wir ein echtes Problem mit Ihrem Sample-String überwinden, Mon May 27 11:46:15 IST 2013: Abkürzung für die Zeitzone. IST kann Irish Summer Time, Israel Standard Time oder India Standard Time bedeuten (Ich habe sogar gelesen, dass Java kann es in Atlantic/Reykjavik Zeitzone - Icelandic Standard Time analysieren?) Um die Interpretation zu steuern, übergeben wir unsere bevorzugte Zeitzone an den Formatierer, den wir zum Parsen verwenden.

    DateTimeFormatter formatter = new DateTimeFormatterBuilder()
            .appendPattern("EEE MMM dd HH:mm:ss ")
            .appendZoneText(TextStyle.SHORT, Set.of(ZoneId.of("Asia/Kolkata")))
            .appendPattern(" yyyy")
            .toFormatter(Locale.ROOT);
    String dateString = "Mon May 27 11:46:15 IST 2013";
    OffsetDateTime dateTime = formatter.parse(dateString, Instant::from)
            .atOffset(ZoneOffset.UTC);
    System.out.println(dateTime);

Dieses Snippet druckt:

2013-05-27T06: 16: 15Z

Dies ist das UTC-Äquivalent Ihrer Zeichenfolge (unter der Annahme, dass IST für India Standard Time war). Übergeben Sie das OffsetDateTime mit einem der PreparedStatement.setObject Methoden (nicht setTimestamp).

Wie kann ich dies in einen Zeitstempel umwandeln und die Differenz zwischen derselben und der aktuellen Zeit in Sekunden berechnen?

Die Berechnung der Differenz in Sekunden geht mit Java.time ganz natürlich:

    long differenceInSeconds = ChronoUnit.SECONDS
            .between(dateTime, OffsetDateTime.now(ZoneOffset.UTC));
    System.out.println(differenceInSeconds);

Beim Laufen bekam ich gerade:

202213260

Link: Oracle Tutorial: Date Time Erklären der Verwendung von Java.time.

0
Ole V.V.