Je cherche du code dans Java
pour récupérer ou synchroniser l'heure de mon système PC local dans mon application.
Essaye ça:
import Java.text.SimpleDateFormat;
import Java.util.Calendar;
public class currentTime {
public static void main(String[] args) {
Calendar cal = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
System.out.println( sdf.format(cal.getTime()) );
}
}
Vous pouvez formater SimpleDateFormat comme vous le souhaitez. Pour toute information supplémentaire, vous pouvez regarder dans Java api:
Tous les deux
new Java.util.Date()
et
System.currentTimeMillis()
vous donnera l'heure actuelle du système.
_Instant.now() // UTC
_
…ou…
_ZonedDateTime.now(
// Specify time zone.
ZoneId.of( "Pacific/Auckland" )
)
_
Les classes groupées _Java.util.Date
_.Calendar
_ sont notoirement gênantes. Évite-les. Ils sont maintenant hérités, supplantés par le framework _/Java.time .
Au lieu de cela, utilisez soit:
_ZonedDateTime zdt = ZonedDateTime.now();
_
Si nécessaire pour l'ancien code, convertissez-le en Java.util.Date. Passez par Instant
, qui est un moment sur la timeline dans UTC .
_Java.util.Date date = Java.util.Date.from( zdt.toInstant() );
_
Il est préférable de spécifier explicitement votre fuseau horaire souhaité/attend plutôt que de vous fier implicitement au fuseau horaire par défaut } de la machine virtuelle.
_ZoneId zoneId = ZoneId.of( "America/Montreal" );
ZonedDateTime zdt = ZonedDateTime.now( zoneId ); // Pass desired/expected time zone.
_
Pour info, le projet Joda-Time est maintenant en mode maintenance , avec l'équipe conseillant la migration vers les classes Java.time .
_DateTime now = DateTime.now();
_
Pour convertir un objet Joda-Time DateTime en un fichier Java.util.Date pour interagir avec d'autres classes…
_Java.util.Date date = now.toDate();
_
Recherchez StackOverflow avant de poster. Votre question a déjà été posée et répondue.
Le cadre Java.time est intégré à Java 8 et versions ultérieures. Ces classes supplantent les anciennes anciennes } _ _ (héritées) qui gênaient, telles que Java.util.Date
, Calendar
_, & SimpleDateFormat
.
Le projet Joda-Time , désormais en mode maintenance , conseille de migrer vers les classes Java.time .
Pour en savoir plus, consultez le Oracle Tutorial . Et recherchez Stack Overflow pour de nombreux exemples et explications. La spécification est JSR 31 .
Où obtenir les classes Java.time?
Le projet ThreeTen-Extra étend Java.time avec des classes supplémentaires. Ce projet est un terrain d’essai pour d’éventuels ajouts à Java.time. Vous pouvez y trouver des classes utiles telles que Interval
_, YearWeek
, YearQuarter
_ et plus _.
System.currentTimeMillis ()
par exemple, new Date () appelle System.currentTimeMillis ().
Essayez de cette façon, plus efficace et compatible:
SimpleDateFormat time_formatter = new SimpleDateFormat("yyyy-MM-dd_HH:mm:ss.SSS");
String current_time_str = time_formatter.format(System.currentTimeMillis());
//Log.i("test", "current_time_str:" + current_time_str);
Juste pour informer les futurs développeurs, et heureusement pour Basil Bourque, je veux juste ajouter ma pierre à ce sujet.
Si vous souhaitez simplement obtenir le format HH: MM: SS, procédez comme suit:
LocalTime hour = ZonedDateTime.now().toLocalTime().truncatedTo(ChronoUnit.SECONDS);
À votre santé.
P.S .: Cela fonctionnera au moins avec Java 8!
Comme dit ci-dessus, vous pouvez utiliser
Date d = new Date();
ou utiliser
Calendar.getInstance();
ou si vous le voulez en millis
System.currentTimeMillis()
essaye ça:
final String currentTime = String.valueOf(System.currentTimeMillis());
Pas vraiment sûr de ce que vous vouliez dire, mais vous avez probablement juste besoin
Date d = new Date();
Vous pouvez utiliser new Date () et cela vous donnera l'heure actuelle.
Si vous avez besoin de le représenter dans un format (et généralement vous devez le faire), utilisez des formateurs.
DateFormat df = DateFormat.getDateTimeInstance (DateFormat.MEDIUM, DateFormat.MEDIUM, new Locale ("en", "EN"));
String formattedDate = df.format (new Date ());
new Date (). getTime () est bogué.
Date date = new Date();
System.out.println(date);
System.out.println(date.getHours() + ":" + date.getMinutes() + ":" + date.getSeconds());
long t1 = date.getTime();
System.out.println((t1 / 1000 / 60 / 60) % 24 + ":" + (t1 / 1000 / 60) % 60 + ":" + (t1 / 1000) % 60);
long t2 = System.currentTimeMillis();
System.out.println((t2 / 1000 / 60 / 60) % 24 + ":" + (t2 / 1000 / 60) % 60 + ":" + (t2 / 1000) % 60);
Il me renvoie le mauvais millis de temps. System.currentTimeMillis()
aussi. Puisque je demande à la Date instance de me dire le millis correspondant, il doit renvoyer les correspondants, pas les autres, d'un autre fuseau horaire. C'est drôle comme les méthodes obsolètes sont les seules qui retournent des valeurs correctes.
Pour obtenir l'heure système, utilisez Calendar.getInstance (). GetTime ()
Et vous devriez obtenir chaque fois la nouvelle instance de Calendar pour avoir l'heure actuelle .
Pour changer l'heure système à partir du code Java, vous pouvez utiliser une ligne de commande
essayez ceci pour obtenir la date actuelle. Vous pouvez également obtenir l'heure, les minutes et les secondes actuelles à l'aide de getters:
new Date(System.currentTimeMillis()).get....()
Je comprends que c'est une question assez ancienne. Mais voudrions préciser que:
Date d = new Date()
est privé dans les versions actuelles de Java. La méthode recommandée consiste à utiliser un objet de calendrier. Pour par exemple:
Calendar cal = Calendar.getInstance();
Date currentTime = cal.getTime();
J'espère que cela aidera les personnes susceptibles de poser cette question à l'avenir. Merci à tous.