2012-09-26 4 views
0

Je veux obtenir le DateTime actuel dans une zone de mon choix et dans un format particulier (par exemple HH-MM-SS, MM-JJ-AA, MoMo-JJ-AA-HH-MM-SS, etc.). Comment puis-je faire cela en utilisant JodaTime?Comment puis-je obtenir l'heure actuelle dans un format particulier, pour une zone particulière?

+1

Qu'avez-vous essayé? Vous pouvez facilement obtenir l'heure actuelle dans une zone spécifique en utilisant le constructeur 'DateTime', et vous pouvez le formater dans un format spécifique en utilisant' DateTimeFormat'. Où êtes-vous coincé? –

+0

@JonSkeet - Je peux faire un DateTime (DT) avec zone. Vous ne savez pas quel est le meilleur - DateTimeZone.forID (XXXX) ou DateTime (TheZone). Après cette étape, comment puis-je convertir le DT i obtenu dans un format particulier? –

Répondre

3

Étant donné que vous avez déjà vu le mode d'emploi (qui comprend des sections sur time zones et formatting), ce n'est pas vraiment clair où votre confusion est. Quelques exemples de code pour vous permettre de continuer:

DateTimeZone zone = DateTimeZone.forID("Europe/London"); 
DateTime currentTimeInLondon = new DateTime(zone); 
DateTimeFormatter formatter = DateTimeFormat.forPattern("HH:mm:ss, MM-dd-yyyy"); 
String text = formatter.print(currentTimeInLondon); // e.g. 08:24:54, 09-26-2012 

Il serait intéressant de vous prendre un certain temps pour analyser pourquoi on ne pouvait pas arriver à ce code vous-même, étant donné les informations contenues dans le guide de l'utilisateur. Être capable de travailler sur la façon d'utiliser les API est une compétence très importante en tant qu'ingénieur logiciel - vous ne devez pas vous attendre à ce que le code soit spoonfé tout le temps.

+0

Oui, je l'ai vu. Cela fonctionne également avec YourDateTime.toString ("PutALegalFormatHere"); –

+0

@davidblaine: Oui, mais ce n'est généralement pas aussi propre - en particulier, vous pouvez généralement créer un 'DateTimeFormat' * une fois * et le réutiliser tout au long de votre vie d'application. –

1

Utilisez le code suivant pour obtenir l'heure selon la zone particulière avec le format.

Locale locale = Locale.FRENCH; 

    // Format with a custom format 
    DateFormat formatter = new SimpleDateFormat("E, dd MMM yyyy", locale); 
    String s = formatter.format(new Date()); 
    // mar., 29 sept. 2012 

    // Format with a default format 
    s = DateFormat.getDateInstance(DateFormat.MEDIUM, locale).format(new Date()); 
    // 29 sept. 2012 
+0

joda temps s'il vous plaît. –

+0

vérifier le lien pour l'heure joda. http://stackoverflow.com/questions/10106143/work-around-for-a-joda-time-bug-in-periodformat –

Questions connexes