Convertir UTC Date à Date
Je suis la conversion de l'époque (qui est en UTC) pour un format comme indiqué ci-dessous. Maintenant, j'ai essayé différentes, DONC des réponses à convertir UTCDate
de UTC
à l'heure locale. Mais je ne suis pas arriver à l'heure locale.
Toute aide serait appréciée.
String epochTime = "1436831775043";
Date UTCDate = new Date(Long.parseLong(epochTime));
Date localDate; //How to get this?
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("h:mm a");
String result = simpleDateFormat.format(UTCDate);
Aussi, la conversion doit être réalisée sans l'aide d'aucune bibliothèque externe.
- Est-ce Java 8?
- Avez-vous essayé
SimpleDateFormat(String pattern, Locale locale)
? - Oui, il est.
- Ou peut-être
ZonedDateTime#withZoneSameInstant
? - Mais il dit, "Ce constructeur ne peut pas soutenir toutes les langues."
- Oui, mais avez-vous essayé? Qu'en est
SimpleDateFormat#setTimeZone
? - Toute chance vous pouvez cesser d'utiliser le obsolète de la Date et de passer à OffsetDateTime et LocalDateTime?
Vous devez vous connecter pour publier un commentaire.
Vous pouvez définir votre fuseau horaire dans le module de formatage:
Java 8
Sorties:
Après pensées...
Je pense que vous êtes en train de pourchasser votre queue.
Date
est juste un conteneur pour le nombre de millisecondes écoulées depuis l'époque (janvier 1, 1970, 00:00:00 GMT). Il ne veut pas effectuer à l'interne une représentation d'une zone de temps (autant que je sache).Par exemple...
Sorties...
Si vous avez un coup d'oeil à
local Date
etutc date
ils sont la même chose, même si lelocal format
etutc format
sont correctement formatés.Donc, au lieu de les chasser de votre conte essayer d'obtenir
Date
"représenter" une valeur que vous voulez, que ce soit l'utilisation de Java 8 est le Temps de l'API ou JodaTime pour gérer les informations de fuseau Horaire ou tout simplement le format de laDate
dans le fuseau Horaire que vous souhaitez...De plus, si nous faisons quelque chose comme...
Il apparaîtra à l'impression...
Date
objet 😉ZoneId
,ZoneOffset
. Ainsi, au lieu deZoneId.of("UTC")
utilisationZoneOffset.UTC
.