Comment définir le temps à une date objet en java
J'ai créé un Date
objet en Java. Quand je le fais, il montre quelque chose comme: date=Tue Aug 09 00:00:00 IST 2011
. En conséquence, il semble que mon fichier Excel est moins d'un jour (27 fév devient 26 février et ainsi de suite) je pense que ça doit être à cause du temps. Comment puis-je le mettre à quelque chose comme 5:30 pm?
- Connexes: Java Date de coupure d'information
Vous devez vous connecter pour publier un commentaire.
Voir Aussi
Pouvez-vous montrer le code que vous utilisez pour le réglage de la date d'objet? De toute façon< vous pouvez utiliser ce code pour l'intialisation de date:
Je voudrais contribuer à la réponse moderne. Cela implique l'utilisation d'
java.time
, le moderne Java date et l'heure de l'API, et pas le vieuxDate
niCalendar
sauf là où il n'y a aucun moyen de l'éviter.Votre question est très probablement vraiment un fuseau horaire question. Quand il est Mar Août 09 00:00:00 IST 2011, dans des fuseaux horaires de l'ouest de l'IST de minuit n'a pas encore été atteint. Il est encore 8 Août. Si par exemple votre API pour mettre la date dans Excel attend UTC, la date sera le jour avant celui que vous avez prévu. Je crois que la vraie et la bonne solution est de produire une date-heure de 00:00 UTC (ou tout le temps que la zone ou le décalage est prévu et utilisé à l'autre bout).
Ce imprime
Z
signifie UTC (pensez à décalage de zéro de l'heure UTC ou Zulu time zone). Mieux encore, bien sûr, si vous pouvez passer leLocalDate
à partir de la première ligne de code pour Excel. Il ne comprend pas l'heure de la journée, donc il n'y a pas de confusion possible. D'autre part, si vous avez besoin d'un bon vieuxDate
objet, convertir juste avant la remise de laDate
sur:Sur mon ordinateur cela s'imprime
Ne faut pas être dupe, c'est correct. Mon fuseau horaire (Heure d'europe Centrale) est à l'offset +01:00 UTC en février (temps standard), de sorte 01:00:00 est égale ici à 00:00:00 UTC. C'est juste
Date.toString()
emparer de la Jvm de fuseau horaire et de l'utiliser pour la production de la chaîne.Pour répondre à votre question directement, si vous avez un
ZonedDateTime
,OffsetDateTime
ouLocalDateTime
, dans tous ces cas, ce qui suit devrait accomplir ce que vous avez demandé:Si
yourDateTime
était unLocalDateTime
de2018-02-27T00:00
, il va maintenant être2018-02-27T17:30
. De même pour les autres types, seulement ils comprennent offset et fuseau horaire trop approprié.Si vous avez seulement eu une date, comme dans le premier extrait ci-dessus, vous pouvez également ajouter de temps de jour des informations:
Pour la plupart des cas vous devriez envisager d'ajouter la date du jour dans un fuseau horaire spécifique, bien que, par exemple
Cela donne
2018-02-27T17:30+05:30[Asia/Kolkata]
.Date
etCalendar
vsjava.time
La
Date
classe que vous utilisez ainsi queCalendar
etSimpleDateFormat
utilisés dans les autres réponses sont dépassée depuis longtemps, etSimpleDateFormat
, en particulier, a prouvé gênants. Dans tous les cas, le moderne Java date et l'heure de l'API est tellement plus agréable de travailler avec. C'est pourquoi j'ai voulu donner cette réponse à une vieille question qui est toujours d'être visité.Lien: Oracle Tutoriel Date Heure, en expliquant comment utiliser
java.time
.