Java s'heure UTC
Je veux faire passer le temps dans le fuseau horaire UTC. Donc j'ai écrit le code:
import java.time.ZoneOffset;
import java.time.ZonedDateTime;
import java.util.Date;
public class RegularSandbox {
public static void main(String[] args) {
ZonedDateTime utc = ZonedDateTime.now(ZoneOffset.UTC);
System.out.println("DATETIME = " + Date.from(utc.toInstant()));
}
}
Le problème, c'est la sortie montre-moi le temps de PST (mon fuseau horaire local). J'ai besoin d'elle à la sortie de l'heure UTC, donc je peux le stocker à l'intérieur de mes bases de données.
C'est le formateur. Vous devez le faire vous-même laissez pas le
Merci pour la réponse. Désolé, je ne suis pas sûr de savoir comment le faire?
Commencer à partir de haut et de travailler votre chemin vers le bas...
C'est le
Double Possible de Format Instantané à la Chaîne de caractères
toString
méthode de le faire pour vous!Merci pour la réponse. Désolé, je ne suis pas sûr de savoir comment le faire?
Commencer à partir de haut et de travailler votre chemin vers le bas...
C'est le
Date#toString()
méthode qui utilise le fuseau horaire du système (qui est le système d'exploitation à l'aide de), lorsqu'il est affiché, pas Date
lui-même. Par défaut et prend toujours UTC
. Donc, si vous persistez un Date
exemple à un sous-jacent de la base de données, il devrait être selon UTC
. Ces réponses simplement de dire comment faire pour afficher la Date, l'Heure, par exemple, sur la console Java qui ne prennent pas en compte le fait que vous avez besoin de conserver une Date
instance dans une base de données (où Java 8 DataTime
n'est pas supporté pour l'instant).Double Possible de Format Instantané à la Chaîne de caractères
OriginalL'auteur user2924127 | 2015-12-27
Vous devez vous connecter pour publier un commentaire.
vous pouvez ajouter la zone-id ou n'importe quoi d'autre vous avez besoin à l'intérieur de modèle
Vous êtes les bienvenus!
OriginalL'auteur LowLevel
Vous d'en faire trop quand vous essayez de convertir de vieux
java.util.Date
. Et puis vous utilisent implicitement sa méthodetoString()
qui devrait être bien connu pour le comportement observé pour imprimer l'instant toujours dans votre système de fuseau horaire.Mais l'impression dans le fuseau horaire UTC est extrêmement simple, même pas un formateur est nécessaire si vous pouvez faire face à la norme ISO-8601-notation:
Vous le voyez, le comportement de
toString()
de la nouvelle Java-8 classesInstant
etZonedDateTime
est beaucoup plus claire et est toujours dans la norme ISO-format. Pas besoin d'une source de confusion conversionDate
.Spécialisés formateurs, vous aurez besoin d'un seul si vous avez l'intention de s'écarter de la norme ISO-8601-format - peut-être localisée à l'aide de noms de mois ou extra impression des jours de la semaine etc. Exemple dans le document US-style:
Noter que la réponse de @Faible utilise un mauvais patron. Si vous laissez de côté le symbole a (AM/PM-marqueur), alors vous ne devez pas choisir le demi-jour-heure-symbole h, mais H (24 heures-format). Et le fuseau horaire décalage ou le symbole (ici x) est cruciale car, sinon, l'imprimé datetime ne sera pas automatiquement reconnu comme étant dans le fuseau horaire UTC.
OriginalL'auteur Meno Hochschild
OriginalL'auteur m.aibin
Merci pour cet extrait de code, qui peut fournir une aide immédiate. Une explication correcte améliorerait grandement sa valeur éducative, en montrant pourquoi c'est une bonne solution au problème, et de le rendre plus utile pour les futurs lecteurs similaires, mais pas identiques, les questions. Veuillez modifier votre réponse pour ajouter des explications, et de donner une indication de ce que les limites et les hypothèses s'appliquent.
OriginalL'auteur Naresh
Je vous suggérons d'utiliser Joda-Time.
OriginalL'auteur jjurm