2009-12-04 7 views
1

Dans ma demande, je l'aide du code comme ceci:Puis-je modifier DateFormat.SHORT pour inclure des secondes ou quelque chose de similaire?

DateFormat df = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT, locale); 
df.setTimeZone(User.getTimeZone()); 
String s = df.format(d); 

aux dates de format dans une application qui est utilisé dans différents endroits. Je voudrais parfois ajouter des secondes à cela, mais je ne veux pas simplement spécifier un format spécifique en utilisant le SimpleDateFormat car je perds la puissance du formatage basé sur les paramètres régionaux.

Alors, quelqu'un a-t-il eu des idées pour apporter une modification mineure à la date formatée en locale?

Cheers,

Chris

+1

Peut-être que Joda Time (http://joda-time.sourceforge.net/) peut vous aider à remplir les deux exigences (pas une 'réponse' car je n'ai jamais utilisé Joda Time mais la plupart des gens l'adorent) –

+0

Hmm, il semble L'utilisation de FieldPosition pourrait vous aider. –

+0

re: Joda time - Ça a l'air bien, je vais devoir regarder plus loin dans ce projet. Merci. –

Répondre

0

La seule solution straight-forward que j'ai trouvé utilise FieldPosition:

DateFormat df = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT, locale); 
df.setTimeZone(User.getTimeZone()); 
StringBuffer sb = new StringBuffer(); 
FieldPosition fp = new FieldPosition(DateFormat.MINUTE_FIELD); 
sb = df.format(d, sb, fp); 
sb.insert(fp.getEndIndex(), new SimpleDateFormat(":ss").format(d)); 
String s = sb.toString(); 

C'est de trouver la position du champ minute dans la chaîne puis me permettre ajouter les secondes juste après. Le seul vrai problème que je peux voir avec ceci, mis à part le fait qu'il soit un peu moche, est que ":" n'est peut-être pas le séparateur correct et il peut déjà avoir quelques secondes dedans. Donc, quelqu'un peut-il voir une meilleure réponse?

Questions connexes