Comment puis-je retourner un objet Date de 4 heures de moins que l'heure actuelle du système en Java?Date d'arrivée à partir de 4 heures
Répondre
L'une des façons les plus simples:
Date date = new Date(System.currentTimeMillis() - (4 * 60 * 60 * 1000));
Cela ne prend pas en compte DST (Daylight Saving Time). Une alternative est Calendar
:
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.HOUR_OF_DAY, -4);
Date date = calendar.getTime();
Ceci est cependant une API assez laid. Une alternative est JodaTime:
DateTime dateTime = new DateTime().minusHours(4);
Date date = dateTime.toDate(); // If you ever need this...
convertir en millisecondes, soustraire le nombre de millisecondes en 4 heures, reconvertir à une date.
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.HOUR_OF_DAY, -4);
calendar.getTime();
'Calendar.HOUR' est basé sur 12 heures (AM/PM) et non sur 24 heures. Vous voulez 'Calendar.HOUR_OF_DAY'. En outre, l'utilisation de 'factory # getInstance()' est préférable à la construction manuelle d'un calendrier spécifique à une région. – BalusC
@BalusC: Corrigé. –
Utilisez un objet Calendar
et la méthode add
.
calendar.add(Calendar.HOUR, -4);
Voir http://download.oracle.com/javase/6/docs/api/java/util/Calendar.html
Calendar c = Calendar.getInstance();
c.add(Calendar.HOUR_OF_DAY, -4);
java.util.Date d = c.getTime();
System.out.println(d);
Les autres réponses sont correctes, mais je voudrais contribuer la réponse moderne. La solution moderne utilise java.time
, l'API de date et heure Java moderne.
Instant fourHoursAgo = Instant.now().minus(Duration.ofHours(4));
System.out.println(fourHoursAgo);
Ce imprimé juste:
2018-01-31T15:22:21.113710Z
Le Z
à la fin indique que le temps est imprimé en UTC - à UTC zéro décalage si vous voulez. La classe Instant
est le remplacement moderne pour Date
, je vous recommande donc de vous y tenir. L'API moderne est généralement tellement plus agréable à utiliser, tellement plus propre, tellement mieux conçu.
Veuillez noter les avantages de laisser la classe de bibliothèque faire la soustraction de 4 heures pour vous: le code est plus clair à lire et moins sujette aux erreurs. Pas de constantes drôles, et aucun lecteur ne prend le temps de vérifier si elles sont correctes.
Si vous faites ont besoin d'une ancienne objet Date
, par exemple lors de l'utilisation d'une API héritage que vous ne pouvez pas changer ou ne veulent pas changer, convertir comme ceci:
Date oldfashionedDate = Date.from(fourHoursAgo);
Lien:Oracle Tutorial trail: Date Time. Bien sûr, il existe d'autres ressources sur Internet, s'il vous plaît chercher.
La prochaine fois, il suffit de voter pour fermer comme dupe au lieu d'afficher des réponses en double. – BalusC
Voyez votre point de vue, @BalusC. J'aurais si je les avais considérés comme des doublons exacts (il y a un chevauchement substantiel entre mes deux réponses, mais ils ne sont pas identiques). –
- 1. Comment ajouter 4 heures à l'heure dans PHP/MySQL
- 2. Différence de date, à l'exclusion de certaines heures et dates
- 3. Soustraire 24 heures dans T-SQL de la date d'aujourd'hui
- 4. setHours à 17 heures
- 5. ajouter des heures en excel basé sur 8 heures
- 6. Comment ajouter des heures à un NSDate?
- 7. Comment afficher après 4 semaines date à partir de maintenant? Je veux passer un argument
- 8. mysql 12 heures à 24 heures de temps de conversion
- 9. si la date de php est 24 heures après la date de mysql stockée
- 10. php Format de 12 heures à format 24 heures conversion
- 11. Calculer des années à partir de date
- 12. php ajouter des heures à la date de sortie mauvais résultat
- 13. Création d'une date à partir d'une chaîne de texte - VB.Net
- 14. Calcul d'une date autour des jours ouvrables/heures?
- 15. Comment détecter .NET 4 à partir d'ASP.NET?
- 16. javascript new Date (0) classe affiche 16 heures?
- 17. Impossible d'obtenir une date précise à partir de db -php
- 18. php et mysql. WHERE date <= X heures auparavant?
- 19. Date d'expiration NET 4 Beta 1
- 20. RIA Services + Entités - Date de déménagement 24 heures plus tôt dans le client
- 21. Calcul du temps écoulé en heures d'une date à la date du jour excluant les fins de semaine
- 22. Transmogrify en date à partir de plusieurs colonnes
- 23. Prévention de HttpClient 4 à partir de la redirection suivante
- 24. Consommation de WCF Rest 4 à partir de ASP. NET
- 25. comment: configurer la fonction date dans la sortie du noeud pour formater la date de à date à, puis commencer et terminer les heures
- 26. Android - Avoir un service exécuté tous les jours à 4 heures
- 27. C# Obtenir juste Date à partir Timestamp
- 28. Choisissez une date à partir du datetimepicker
- 29. TSQL strip date à partir datetime
- 30. Dans SQL Je voudrais soustraire une date à partir d'une date antérieure de la ligne
Pourquoi l'heure d'été n'est-elle pas prise en compte? –
La première façon fonctionne, même si je pense qu'il est préférable de dire qu'il ne prend pas en compte les transitions DST * timezone *. +1 pour mentionner JodaTime. –
@Thor: Parce que pendant l'exécution, vous ne savez pas sur la base de 'System # currentTimeMillis()' si DST a été activé/désactivé au cours des 4 dernières heures, vous risquez de perdre l'heure. – BalusC