2012-06-04 8 views
5

J'ai une chaîne date-heure d'entrée:Afficher la date dans l'environnement linguistique actuelle

2012-06-04 15:41:28

Je voudrais afficher correctement pour différents pays. Par exemple, en Europe, nous avons dd.MM.yyyy alors que US utilise MM/jj/aaaa.

Mon code actuel est comme ceci:

TextView timedate = (TextView) v.findViewById(R.id.report_date); 
SimpleDateFormat curFormater = new SimpleDateFormat("yyyy-MM-dd kk:mm:ss"); 
curFormater.setTimeZone(TimeZone.getDefault()); 
Date dateObj = curFormater.parse(my_input_string); 
timedate.setText(dateObj.toLocaleString()); 

Mais cela ne fonctionne pas exactement comme je veux (je reçois toujours le « uniforme » résultat comme « le 4 juin 2012 15:41:28 » , même sur mon téléphone). Qu'est-ce que je fais mal?

Répondre

2

Essayez ceci:

TextView timedate = (TextView) v.findViewById(R.id.report_date); 
SimpleDateFormat curFormater = new SimpleDateFormat("yyyy-MM-dd kk:mm:ss"); 
curFormater.setTimeZone(TimeZone.getDefault()); 
Date dateObj = curFormater.parse(my_input_string); 

int datestyle = DateFormat.SHORT; // try also MEDIUM, and FULL 
int timestyle = DateFormat.MEDIUM; 
DateFormat df = DateFormat.getDateTimeInstance(datestyle, timestyle, Locale.getDefault()); 

timedate.setText(df.format(dateObj)); // ex. Slovene: 23. okt. 2014 20:34:45 
0

Avez-vous essayé cette variante:

SimpleDateFormat sdf = new SimpleDateFormat(format, Locale.US); 
    System.err.format("%30s %s\n", format, sdf.format(new Date(0))); 
    sdf.setTimeZone(TimeZone.getTimeZone("UTC")); 

Got it de la documentation. Je veux dire en utilisant la méthode format().

+0

Ce ne fonctionne pas. Où avez-vous eu System.err ?? C'est Android. –

+0

C'était juste un exemple, où je vous montre en utilisant des méthodes 'SimpleDateFormat'. Vous devez utiliser la méthode 'format()' pour obtenir un comportement désireux. – teoREtik

+0

Je connais la fonction format(). Ce que je ne sais pas, c'est comment détecter les paramètres régionaux actuels (par exemple, États-Unis ou Europe) pour le formater correctement. –

1

La façon la plus simple pour obtenir la date actuelle dans locale actuelle (locale de l'appareil!):

String currentDate = DateFormat.getDateInstance().format(Calendar.getInstance().getTime()); 

Si vous voulez avoir la date dans des styles différents utilisent getDateInstance(int style) :

DateFormat.getDateInstance(DateFormat.FULL).format(Calendar.getInstance().getTime()); 

Autres styles: DateFormat.LONG, DateFormat.DATE_FIELD, DateFormat.DAY_OF_YEAR_FIELD, etc. (utiliser CTRL + Espace pour voir tous)

Si vous avez besoin du temps trop:

String currentDateTime = DateFormat.getDateTimeInstance(DateFormat.DEFAULT,DateFormat.LONG).format(Calendar.getInstance().getTime()); 
Questions connexes