2017-03-31 3 views
-1

ich folgendes Datum als String habenWie lautet das Datumsformat für diese Zeichenfolge?

2017-03-01T10:15:41-0800 

, die ich versuche, mit

new Date().parse('dd/mm/yyyy', dateString) 

jedoch zu verwenden, kann ich nicht das Format herauszufinden.

+1

Es gibt keine solche Analyse-Methode in der Date-Klasse. Und eine Java-Zeichenfolge ist in doppelte Anführungszeichen eingeschlossen. So kann dieser Code nicht einmal kompilieren. Und das Muster ist offensichtlich nicht das, das du gibst. Google für "wie man ein Datum in Java parst". Uou wird Tonnen von relevanten Ergebnissen haben. –

+0

@JBNizet Ich denke, das könnte ein Fall von falschem Tag sein, wie das ist groovy – weston

+1

@ user304966 ist das eigentlich eine groovige Frage? – weston

Antwort

1

Ihr dateString und Datumsformat Spiel nicht. Groovy Stil:

def dateString = "2017-03-01T10:15:41-0800" 
new Date().parse("yyyy-MM-dd'T'HH:mm:ssZ", dateString) 

Ergebnis:

Wed Mar 01 21:15:41 EAT 2017 

Sie here für mehr Informationen über das Datumsformat Muster beziehen.

1

Betrachten SimpleDateFormat mit:

import java.text.ParseException; 
import java.text.SimpleDateFormat; 
import java.util.Date; 

class Main { 
    public static void main(String[] args) { 
    try { 
     SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ssX"); 
     Date parsed = format.parse("2017-03-01T10:15:41-0800"); 
    } catch (ParseException e){ 
     e.printStackTrace(); 
    } 
    } 
} 

Probieren Sie es here!

+0

Dies ist eine wirklich peinliche Art, Daten in Groovy zu analysieren. Java-8-Datenklassen sind selbst in Java weniger anfällig. – BalRog

+0

Als ich die Frage nur beantwortet hatte hatte das Tag Java kein Groovy. – shash678

0

Datum Klasse enthält eine eigene, statischeParse Methode (JB Nizet auf Ihre Frage in seinem Kommentar falsch war).

Einzelheiten http://docs.groovy-lang.org/latest/html/groovy-jdk/java/util/Date.html#parse(java.lang.String,%20java.lang.String)

So sehen, ob Sie das Parsen nur einmal durchzuführen, verwenden Sie nur diese Methode.

Auf der anderen Seite, wenn Sie planen, eine solche Umwandlung mehrere mal auszuführen, ist es effizienter, eine Simple Instanz (einmal) zu erstellen und sie dann mehrmals verwenden.

0

Wenn Sie können, und Sie sind auf Java 8, vermeiden java.util.Date und analysieren sie in einem der neuen java.time Klassen:

import java.time.* 
import java.time.format.DateTimeFormatter 

def dateString = "2017-03-01T10:15:41-0800" 

def date = OffsetDateTime.parse(dateString, 
           DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssZ")) 

Wenn Sie dann in einer anderen Zone diesmal wollen (dh: UTC), können Sie tun:

def utcDate = date.atZoneSameInstant(ZoneOffset.UTC) 
Verwandte Themen