2010-06-14 02:21:49+0400 ou 2010-06-14 02:21:49-0400
Existe-t-il un moyen de convertir cette chaîne en date selon le fuseau horaire de la machine locale avec le format 2010-06-14 02:21 AM ?
2010-06-14 02:21:49+0400 ou 2010-06-14 02:21:49-0400
Existe-t-il un moyen de convertir cette chaîne en date selon le fuseau horaire de la machine locale avec le format 2010-06-14 02:21 AM ?
En complément de ce que @org.life.java et @Erica ont dit, voici ce que vous devriez faire
String dateStr = "2010-06-14 02:21:49-0400";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ssZ");
TimeZone tz = TimeZone.getDefault();
sdf.setTimeZone(tz);
Date date = sdf.parse(dateStr);
sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss a");
String newDateStr = sdf.format(date);
System.out.println(newDateStr);
Entonces newDateStr
sera votre nouvelle chaîne formatée en date.
UPDATE @xydev, l'exemple que je vous ai donné fonctionne, voir le code source complet ci-dessous :
/**
*
*/
package testcases;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimeZone;
/**
* @author The Elite Gentleman
*
*/
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
String dateStr = "2010-06-14 02:21:49-0400";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ssZ");
TimeZone tz = TimeZone.getDefault();
sdf.setTimeZone(tz);
Date date = sdf.parse(dateStr);
sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss a");
String newDateStr = sdf.format(date);
System.out.println(newDateStr);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Sortie : 2010-06-14 08:21:49 AM
Utilisation de SimpleDateFormat
String string1 = "2010-06-14 02:21:49-0400";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ssZ")
sdf.setTimeZone(tz);
Date date = sdf.parse(string1);
Note : Je ne suis pas sûr que la même classe soit disponible dans andriod.
Vous pouvez effectuer toutes sortes de formatages fantaisistes et localiser des dates à l'aide de la classe DateFormat. Vous trouverez une documentation complète et de qualité au début de la page de l'API ici : http://download.oracle.com/javase/1.4.2/docs/api/java/text/DateFormat.html
La plupart des cas ordinaires peuvent être traités avec l'objet SimpleDateFormat intégré. Ses détails sont ici : http://download.oracle.com/javase/1.4.2/docs/api/java/text/SimpleDateFormat.html
La chaîne de caractères de sortie SimpleDateFormat pour l'exemple ci-dessus serait la suivante :
yyyy-MM-dd hh:mm a
Attention, si vous utilisez l'émulateur, votre fuseau horaire est toujours GMT. Je viens de passer 2 heures à essayer de comprendre pourquoi mon application ne me donne pas la bonne heure (celle que mon ordinateur affiche) jusqu'à ce que je réalise que c'est à cause de l'émulateur.
Pour vérifier que vous fonctionnez sur l'émulateur, utilisez
if (Build.PRODUCT.contains("sdk")){
// your code here for example if curtime has the emulator time
// since midnight in milliseconds then
curtime += 2 * 60 * 60 * 1000; // to add 2 hours from GMT
}
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.