Java Tekenreeks DateTime

Ik heb een string van een json-antwoord:

start: "2013-09-18T20:40:00+0000",
end: "2013-09-18T21:39:00+0000",

Hoe kan ik omzetten van een string naar een java DateTime Object?

ik heb geprobeerd met behulp van de volgende:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX");
start = sdf.parse("2013-09-18T20:40:00+0000");

maar met dit kan ik alleen maar het maken van een Date Object. Maar de tijd gebonden in de String is nogal essentieel.

Alle Hulp wordt zeer gewaardeerd!

  • Date heeft ook informatie.
  • Ok, maar ik moet het een DateTime Object 🙂
  • Java heeft geen DateTime klasse. Gebruik Date.
  • Heb je het over java api of de joda time api?
  • FYI, kan het lastig zijn oude datum-tijd-klassen, zoals java.util.Date, java.util.Calendar, en java.text.SimpleDateFormat zijn nu legacy, verdrongen door de java.tijd klassen gebouwd in Java 8 en hoger. Zie Tutorial door Oracle.
InformationsquelleAutor sn0ep | 2013-09-16



3 Replies
  1. 5

    Kunt u Joda Datum /tijd object van de Java Datum object, omdat Java niet een DateTime klasse.

    DateTime dt = new DateTime(start.getTime());

    Hoewel de Date klasse van Java in het bezit van de tijd informatie(dat is wat je nodig hebt in de eerste plaats), ik raden u aan om een Calendar in plaats van de Date klasse van Java.

    Calendar myCal = new GregorianCalendar();
    myCal.setTime(date);

    Neem een kijkje op de Agenda documenten voor meer informatie over hoe u kunt gebruik maken van het meer effectief.


    Dingen zijn veranderd en nu zelfs Java (Java 8 om precies te zijn), heeft een LocalDateTime en ZonedDateTime klasse. Voor conversies, kunt u eens een kijkje op deze DUS antwoord(het plaatsen van een uittreksel uit er).

    Gegeven: Date date = [some date]

    (1) LocalDateTime << Direct<< Datum

    Instant instant = Instant.ofEpochMilli(date.getTime());
    LocalDateTime ldt = LocalDateTime.ofInstant(instant, ZoneOffset.UTC);

    (2) Datum << Direct << LocalDateTime

    Instant instant = ldt.toInstant(ZoneOffset.UTC);
    Date date = Date.from(instant);
    • +1 voor het gebruik van Joda – het is een veel betere datum voor de uitvoering van de basic Java een
    • Uw link verwijst naar de verkeerde Date, het is java.util.Date, niet java.sql.Date 🙂
    • LocalDateTime is het verkeerde type om hier gebruik van. Je zou het weg te gooien kostbare tijd zone of een offset-van-UTC informatie. Gebruik ZonedDateTime als u wilt bekijken een Instant in andere regio ‘ s aan de muur tijd van de klok.
  2. 7

    U hoeft niet een DateTime object. java.util.Datum slaat de tijd ook.

    int hours = start.getHours(); //returns the hours
    int minutes = start.getMinutes(); //returns the minutes
    int seconds = start.getSeconds(); //returns the seconds

    Als R. J zegt, deze methoden zijn niet meer in gebruik, zodat u kunt gebruik maken van de java.util.Agenda klasse:

    Calendar calendar = Calendar.getInstance();
    calendar.setTime(sdf.parse("2013-09-18T20:40:00+0000"));
    int hour = calendar.get(Calendar.HOUR); //returns the hour
    int minute = calendar.get(Calendar.MINUTE); //returns the minute
    int second = calendar.get(Calendar.SECOND); //returns the second

    Opmerking: op mijn einde, sdf.parse("2013-09-18T20:40:00+0000") vuurt een

    java.text.ParseException: Unparseable date: "2013-09-18T20:40:00+0000"
        at java.text.DateFormat.parse(DateFormat.java:357)
        at MainClass.main(MainClass.java:16)
  3. 3

    Kunt u gebruik maken van DateTimeFormatter

    DateTimeFormatter format = DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss.SSSXXX");
    DateTime time = format.parseDateTime("2013-09-18T20:40:00+0000");

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *