# Datum und Uhrzeitpattern von Locale



## internet (29. Jan 2014)

Hallo,

1.) 
wie schaffe ich es ein Datum Pattern abhängig von der Locale zu bekommen. Prinzipiell möchte ich nur das Pattern in einem String speichern.

Also Beispiel:

Locale = de_DE
Bedeutet, dass das Pattern folgendermaßen aussieht:
*String sPattern = "dd.MM.yyyy"*

Also das* kurze Datum (short)* möchte ich bekommen, nicht Sonntag, 2.10.2014

2.) benötige ich ein Pattern mit der Uhrzeit, ebenso wieder abhängig vom Land
3.) Ein Pattern mit dem Datum und Uhrzeit, auch abhängig von der Locale. 
Als Beispiel Deutschalnd: dd.MM.yyyy hh:mm
4.) Die Zeitzone abhängig von der Locale.

Ich habe gesehen, dass es eine Library gibt. (JodaTime). Hat jemand hiermit schon Erfahrung gesammelt. Kann jemand bitte hier Beispiele für die Szenarien posten.
Wäre richtig super.

Besten Dank für Eure Hilfe.


----------



## turtle (29. Jan 2014)

```
DateTimeFormatter dateTimeFormatter = DateTimeFormat.forPattern("dd.MM.yyyy HH:mm:ss");
		DateTime dtVergangenheit = dateTimeFormatter.parseDateTime("05.04.2003 10:11:22");
		DateTimeFormatter fmt = DateTimeFormat.fullDateTime();//DateFormat.LONG,DateFormat.MEDIUM,DateFormat.SHORT
		DateTime dtNow = dateTimeFormatter.parseDateTime("05.04.2003 12:16:22");
		String samstag5April2003 = fmt.withLocale(Locale.GERMANY).print(dtNow);
//Samstag, 5. April 2003 12:16 Uhr MESZ
		System.out.println(samstag5April2003);
//05.04.2003 10:11:22
		System.out.println(dateTimeFormatter.print(dtVergangenheit));
```


----------



## internet (29. Jan 2014)

Vielen Dank für die Antwort.
Das ist jedoch leider nicht das was ich suche.

Ich möchte quasi diesen Code abhängig von der Locale:

```
DateTimeFormat.forPattern("dd.MM.yyyy HH:mm:ss");
```

Für Deutschland ist das: dd.MM.yyyy HH:mm:ss
In USA: YYYY-MM-dd 

usw.


----------



## turtle (30. Jan 2014)

> Für Deutschland ist das: dd.MM.yyyy HH:mm:ss
> In USA: YYYY-MM-dd


 Da sind doch ZWEI verschiedene Pattern, oder???:L

Mir ist keine Möglichkeit bekannt, das du ein "deutsches" Pattern eingibst und das für USA umgewandelt wird. Das musst du schon selber machen.

Die Methoden DateTimeFormat.fullDateTime(), etc. haben das Pattern voreingestellt

Für Deutsch="EEEE, d. MMMM yyyy HH:mm' Uhr 'z'"
Für USA="EEEE, MMMM d, yyyy h:mm:ss a z"


----------



## internet (30. Jan 2014)

Ja, das sind zwei verschiedene Pattern.

Ich möchte auch kein deutsches Pattern eingeben. 
Sondern möchte, dass mir das Pattern anhand der Locale zurückgeliefert wird. 

a) Pattern eben für das Datum (kurz), also 30.01.2014
b) Pattern für Datum + Zeit, also 30.01.2014 12:30

Das sollte doch gehen?


----------



## turtle (30. Jan 2014)

> Sondern möchte, dass mir das Pattern anhand der Locale zurückgeliefert wird.



Wie ich schon sagte gibt es ein Default-Handling mit Full,. Wenn das bei dir nicht zutrifft, ändere es. 

Du kannst das Pattern zu einer Locale abfragen


```
SimpleDateFormat dateInstance = (SimpleDateFormat) DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT, Locale.GERMANY);
	System.out.println(dateInstance.toLocalizedPattern());
```


----------



## internet (30. Jan 2014)

okay, so fast....

Ich bekomme nun das hier:

```
Localized Pattern: tt.MM.uuuu
```

Möchte aber das:
Pattern: 
	
	
	
	





```
dd.MM.yyyy
```


----------



## turtle (31. Jan 2014)

*dateInstance.toPattern()*


```
DateTime dtNow = new DateTime();
	SimpleDateFormat dateInstance = (SimpleDateFormat) DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT, Locale.GERMANY);
	DateTimeFormatter fmt = new DateTimeFormatterBuilder().appendPattern(dateInstance.toPattern()).toFormatter();
	String strNow = fmt.withLocale(Locale.US).print(dtNow);
	System.out.println(dateInstance.toPattern());
	System.out.println(strNow);
```


----------

