Comment puis-je convertir du calendrier grégorien en un temps Unix, en Java?
Je suis dans le besoin d'une méthode pour convertir GregorianCalendar Objet à Temps Unix (c'est à dire une longue). Également besoin d'une méthode pour convertir le Temps Unix (long) retour à GregorianCalendar Objet. Existe-il des méthodes qui ne ce? Si non, alors comment puis-je le faire? Toute aide serait très appréciée.
Lien vers la Classe GregorianCalendar --> http://download.oracle.com/javase/1.4.2/docs/api/java/util/GregorianCalendar.html
Grâce.
source d'informationauteur androidNoob | 2010-10-25
Vous devez vous connecter pour publier un commentaire.
Les méthodes
getTimeInMillis()
etsetTimeInMillis(long)
vous permettra d'obtenir et de définir la durée en millisecondes, qui est le temps unix multiplié par 1000. Vous aurez à régler manuellement depuis le temps unix ne comprend pas millisecondes seulement quelques secondes.De côté: Si vous utilisez des dates beaucoup dans votre application, surtout si vous êtes à la conversion des dates ou à l'aide de plusieurs fuseaux horaires, je vous recommande fortement de l'aide de l' JodaTime de la bibliothèque. C'est très complet et tout à fait un peu plus naturel à comprendre que le système de Calendrier qui vient avec Java.
Je crois que GregorianCalendar.getTimeInMillis() et GregorianCalendar.SetTimeInMillis() vous permettra d'obtenir et de définir des valeurs long de la façon dont vous le souhaitez.
Découvrez la setTimeInMillis et getTimeInMillis fonctions: http://download.oracle.com/javase/6/docs/api/java/util/Calendar.html#getTimeInMillis()
Calendrier.getTimeInMillis() doit être ce que vous cherchez.
tl;dr
Et va dans une autre direction...
Éviter héritage de date-heure classes
Les autres Réponses sont correctes, et court. Mais, pour info, le gênants de longue date du temps des classes comme
java.util.Date
java.util.Agenda
etjava.text.SimpleDateFormat
sont maintenant héritagesupplanté par le java.le temps classes intégré dans Java 8 & Java 9.Voici donc comment faire pour convertir et utiliser les classes modernes à la place de votre problème.
java.temps
Convertir à partir de l'héritage de la classe
GregorianCalendar
à l'modernes de la classeZonedDateTime
. Appel à de nouvelles méthodes ajoutées aux anciennes classes.Et va dans une autre direction...
Si par “Le temps Unix” vous signifie un nombre entier de secondes depuis le l'époque de référence du premier moment de 1970 UTC, 1970-01-01T00:00:00Z, puis d'appeler
toEpochSecond
.Si vous vouliez dire un nombre de millisecondes écoulées depuis 1970 a commencé en UTC, puis d'en extraire une
Instant
. LeInstantané
classe représente un moment dans le scénario de UTC avec une résolution de nanosecondes (jusqu'à neuf (9) chiffres d'une fraction décimale).Maintenant demander le nombre de millisecondes.
Garder à l'esprit que le fait de poser, soit en secondes ou millisecondes peut impliquer la perte de données. Le
ZonedDateTime
etInstant
à la fois de résoudre de nanosecondes. De sorte que toute microsecondes ou nanosecondes qui peuvent être présents seront ignorés que vous compter en secondes ou millisecondes.Sur java.temps
La java.temps cadre est intégré dans Java 8 et les versions ultérieures. Ces classes permettent d'éviter la pénible vieux héritage date du temps des classes comme
java.util.Date
Agenda
&SimpleDateFormat
.La Joda-Time projet, maintenant dans le mode de maintenanceconseille la migration vers le java.le temps classes.
Pour en savoir plus, consultez les Oracle Tutoriel. Et de recherche de Débordement de Pile pour de nombreux exemples et des explications. La spécification est JSR 310.
À l'aide d'un Pilote JDBC compatible avec JDBC 4.2 ou plus tard, vous pouvez l'échanger java.temps objets directement avec votre base de données. Pas besoin de chaînes ni de java.sql.* classes.
Où obtenir le java.les classes de temps?
La ThreeTen-Extra projet s'étend java.temps avec d'autres classes. Ce projet est un terrain d'essai pour de possibles futurs ajouts à java.temps. Vous pouvez trouver quelques classes utiles ici comme
Intervalle
YearWeek
YearQuarter
et plus.