J'ai vu cette question posée à plusieurs reprises et aucune des réponses ne semble être ce dont j'ai besoin.
J'ai une variable de type long qui a un temps Epoch stocké en elle.
Ce que je veux faire est de le convertir en chaîne
par exemple, si le temps d’époque enregistré était celui d’aujourd’hui, la dernière chaîne serait la suivante:
17/03/2012
Comment pourrais-je cela?
Regardez dans SimpleDateFormat
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
sdf.format(new Date(myTimeAsLong));
Vous créeriez une Date
à partir de long
- c'est facile:
Date date = new Date(epochTime);
Notez que epochTime
devrait ici être en millisecondes depuis l’époque - si vous avez secondes depuis l’époque, multipliez par 1000.
Ensuite, vous créez une SimpleDateFormat
spécifiant le modèle, la culture et le fuseau horaire appropriés. Par exemple:
SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy", Locale.US);
format.setTimeZone(...);
Puis utilisez cela pour formater la date en une chaîne:
String text = format.format(date);
Date date = new Date(String);
c'est obsolète.
solution
Date date = new Date(1406178443 * 1000L);
DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
format.setTimeZone(TimeZone.getTimeZone("Etc/UTC"));
String formatted = format.format(date);
assurez-vous de multiplier par 1000L
Si, à l'époque, vous vouliez compter le nombre de millisecondes depuis le premier instant de 1970 en UTC, voici un exemple de code utilisant la bibliothèque Joda-Time…
DateTimeZone timeZone = DateTimeZone.forID( "Europe/Paris" );
DateTime dateTime = new DateTime( yourMilliseconds, timeZone );
String output = DateTimeFormat.forStyle( "S-" ).withLocale( Locale.CANADA_FRENCH ).print( dateTime );
Cette définition d'Epoch est courante en raison de son utilisation sous Unix. Mais sachez qu'au moins un { couple douzaine de définitions d'époques } sont utilisés par divers systèmes informatiques.
essaye ça
Date date = new Date(1476126532838L);
DateFormat format = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
format.setTimeZone(TimeZone.getTimeZone("Etc/UTC"));
String formatted = format.format(date);
format.setTimeZone(TimeZone.getTimeZone("Asia/Colombo"));//your zone
formatted = format.format(date);
System.out.println(formatted);
basé sur les réponses précédentes, en passant les valeurs par défaut du système Locale
et TimeZone
...
String epochToIso8601(long time) {
String format = "yyyy-MM-dd HH:mm:ss";
SimpleDateFormat sdf = new SimpleDateFormat(format, Locale.getDefault());
sdf.setTimeZone(TimeZone.getDefault());
return sdf.format(new Date(time * 1000));
}
Il est temps que quelqu'un fournisse la réponse moderne (valide et recommandé depuis 2014).
DateTimeFormatter formatter = DateTimeFormatter
.ofLocalizedDateTime(FormatStyle.LONG).withLocale(Locale.US);
String facebookTime = "1548410106047";
long fbt = Long.parseLong(facebookTime);
ZonedDateTime dateTime = Instant.ofEpochMilli(fbt).atZone(ZoneId.of("America/Indiana/Knox"));
System.out.println(dateTime.format(formatter));
La sortie est:
25 janvier 2019 à 03:55:06 CST
Si vous ne vouliez que la date et dans un format plus court, utilisez par exemple
DateTimeFormatter formatter = DateTimeFormatter
.ofLocalizedDate(FormatStyle.SHORT).withLocale(Locale.US);
1/25/19
Notez que l'extrait de code vous permet de spécifier le fuseau horaire, la langue (paramètres régionaux) et la longueur du format souhaité.
Vous devez savoir que l’époque en Java est exprimée en millisecondes, alors que ce que vous convertissez peut l’être en secondes. Assurez-vous que les deux côtés des conversions sont en millisecondes, puis vous pourrez extraire les paramètres de date à partir de l'objet Date.
Essaye ça...
exemple d'horodatage d'époque: 1414492391238
Méthode:
public static String GetHumanReadableDate(long epochSec, String dateFormatStr) {
Date date = new Date(epochSec * 1000);
SimpleDateFormat format = new SimpleDateFormat(dateFormatStr,
Locale.getDefault());
return format.format(date);
}
Ergonomie:
long timestamp = Long.parseLong(engTime) / 1000;
String engTime_ = GetHumanReadableDate(timestamp, "dd-MM-yyyy HH:mm:ss aa");
Résultat:
28-10-2014 16:03:11 pm
Bonne codage