Convertir UTC date en millisecondes
Je ne suis pas intéressée à ce que l'heure UTC actuelle est en millisecondes, je n'ai pas besoin de jouer avec les fuseaux horaires. Ma date d'origine est déjà stocké comme un horodatage UTC.
J'ai une date stockée dans une base de données en heure UTC, "2012-06-14 05:01:25".
Je ne suis pas intéressé par le datetime, mais juste la partie date de la. Ainsi, après la récupération de la date en Java, et à l'exclusion des heures, des minutes et des secondes - je suis parti avec "2012-06-14".
Comment puis-je convertir ce UTC millisecondes?
OriginalL'auteur Tyrick | 2012-08-22
Vous devez vous connecter pour publier un commentaire.
EDIT: j'avais raté le "en ignorant le moment de la journée". Il est maintenant présent, mais près de la fin...
L'approche la plus simple est probablement d'utiliser
SimpleDateFormat
, après avoir défini la zone de temps de manière appropriée:(Réglage de la zone horaire est ce qui importe peu ici, parce que sinon, il va interpréter la valeur dans le local fuseau horaire.)
Alternativement, si vous êtes en train de faire quelque chose de moins banal que cela, utilisez Joda Time qui est une bien meilleure date/heure API. En particulier,
SimpleDateFormat
n'est pas thread-safe alors queDateTimeFormatter
est:Maintenant, jusqu'à présent, nous avons analysé l'ensemble de la frusquin. La façon la plus simple d'ignorer la partie de la date, c'est juste pour arrondir - après tout, Java n'a pas d'observer les secondes intercalaires, il nous suffit de le tronquer:
Qui va "aller-vers 1970" donc si vous avez une date avant 1970, il sera tour à la fin de la journée - mais je pense que c'est peu probable d'être un problème.
Avec le Joda Time version vous pouvez simplement utiliser ce lieu:
Personnellement, je ne pas aller avec l'idée de prendre une sous-chaîne. Même si vous n'êtes pas vraiment intéressé à la préservation de l'heure/minute/seconde, je pense qu'il convient d'analyser ce que vous avez été donné et puis jeter de l'information. À côté de quelque chose d'autre, il rend votre code d'échouer de façon appropriée avec de mauvaises données, par exemple
ou
indiquer des problèmes dans tout ce qui est la fourniture de données, et il est bon de repérer que, plutôt que de continuer aveuglément tout simplement parce que les 10 premiers caractères sont d'accord.
J'avais manqué cette partie! D'éditer...
J'ai fait valoir à l'encontre de la sous-chaîne à la fin du post.
OriginalL'auteur Jon Skeet
Utilisation de l'objet Date en combinaison avec SimpleDateFormat.
Il y a une méthode getTime() à la Date qui sera de retour le millisecondes pour vous.
Exemple qui permet de résoudre votre problème :
OriginalL'auteur Benj
Il existe deux méthodes ici:
OriginalL'auteur Nabil H
Plus simple
La réponse de Jon Skeet est correct. Et il fait un bon point sur y compris, plutôt que de les tronquer, le temps de la journée d'info lors de l'analyse.
Cependant, son code peut être simplifié. Surtout parce que Joda-Time gagné une importante nouvelle méthode dans les dernières versions:
withTimeAtStartOfDay
. Cette méthode se substitue à tous les "minuit"des classes et des méthodes qui sont maintenant obsolètes.La spécification d'un Paramètres régionaux est une bonne habitude, comme indiqué dans son code. Mais dans ce cas particulier, les paramètres Régionaux n'est pas nécessaire.
Sa réponse correctement suggère la Joda-Time library, de loin supérieure à l'aide de java.util.La Date, l' .Calendrier et java.texte.SimpleTextFormat. Ces classes sont notoirement difficile, et doit être évitée. Au lieu d'utiliser soit Joda-Time ou le nouveau java.en temps intégré dans Java 8 (inspiré par Joda-Time, défini par la JSR 310).
Premier Moment De La Journée
Vous ne pouvez pas ignorer l'heure de la journée si ce que vous voulez est un nombre de millisecondes depuis leépoque. Je soupçonne ce que vous voulez, c'est de changer le temps de le premier moment de la journée. En UTC, cela signifie toujours le temps
00:00:00.000
. Mais notez que dans les fuseaux horaires, le premier moment peut être une autre fois à cause de L'Heure D'Été et éventuellement d'autres anomalies.ISO 8601
Votre chaîne est presque dans la norme ISO 8601 format, mais nous avons besoin de changer de
T
pour l'ESPACE dans le milieu. Alors nous pouvons nourrir la chaîne obtenue directement à Joda-Time Joda-Time a intégré formateurs utilisé par défaut pour les chaînes standard.Exemple De Code
L'exemple de code suivant suppose que le but de votre question est d'analyser une chaîne de caractères comme une date-valeur de temps en UTC fuseau horaire, réglez le temps de le premier moment de la journée, et ensuite de les convertir en nombre de millisecondes depuis le L'époque Unix (début des années 1970 en UTC).
OriginalL'auteur Basil Bourque
J'utilise un simple et approche:
OriginalL'auteur zeeshan