J'essaie de lire le format actuel de la date et de l'heure du système en java, mais après analyse, je n'ai trouvé aucune méthode à ce sujet, alors quelqu'un peut-il m'aider. C'est ce que je veux lire de java. p >
3 Réponses :
Vous ne pouvez demander l'heure actuelle du système qu'en millisecondes. Et puis vous pouvez les transformer en DateTime:
long timestamp = System.currentTimeMillis(); SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm"); Date date = new Date(timestamp); System.out.println(dateFormat.format(date));
la question porte sur le format configuré dans le système d'exploitation.
Veuillez ne pas apprendre aux jeunes à utiliser la classe SimpleDateFormat
, notoirement gênante et obsolète depuis longtemps. Aujourd'hui, nous avons tellement mieux dans java.time, l'API Java de date et d'heure moderne, a> et son DateTimeFormatter
.
Vous ne pouvez pas le faire uniquement avec l'API Java. Le format date-heure du système est spécifique au système d'exploitation, et Java n'a pas d'API pour le lire (vous pouvez lire la date-heure et les paramètres régionaux, mais pas le format). Vous devrez trouver une bibliothèque qui le fait ou l'écrire vous-même - mais sachez que cela va être très différent pour chaque système d'exploitation. Par exemple. pour Windows, vous devrez peut-être lire le registre Windows.
Pour obtenir les paramètres régionaux: Locale.getDefault()
À partir des paramètres régionaux, vous pouvez probablement assumer le format dans la plupart des cas (mais pas si l'utilisateur a choisi un format non typique).
Pour obtenir un DateTimeFormatter
pour les paramètres régionaux actuels du système, vous pouvez utiliser DateTimeFormatter.ofLocalizedDateTime ()
Le FormatStyle détermine si vous voulez une représentation longue ou courte (mardi 12 avril 1952 après 15h30:42 PST contre 13.12.52 15:30).
Quelques exemples et quoi Je suis sur mon système local:
//Tuesday, 2 April 2019 at 5:49:39 pm Australian Eastern Daylight Time DateTimeFormatter.ofLocalizedDateTime(FormatStyle.FULL).format(ZonedDateTime.now()) //2 April 2019 at 5:50:20 pm AEDT DateTimeFormatter.ofLocalizedDateTime(FormatStyle.LONG).format(ZonedDateTime.now()) //2/4/19, 5:50 pm DateTimeFormatter.ofLocalizedDateTime(FormatStyle.SHORT).format(ZonedDateTime.now())
qu'avez-vous essayé? obtenir la date système n'est qu'un seul appel de méthode (à partir de l'une des classes numériques).
@Stultuske la question porte sur le format de la date et de l'heure.
@JBNizet Il s'agit de la "date système actuelle" et du "format de l'heure". Donc, je suppose qu'ils veulent la date système actuelle (étape 1) dans un format spécifique (étape 2). Vous ne pouvez pas avoir le résultat si vous n'avez pas le début. Donc, tant que l'OP n'a pas LocalDateTime, DateTime, ... .now () ou similaire, lancer un formateur est un peu redondant
Je veux juste lire le format date / heure, pas la date / heure actuelle en java.
J'ai publié une réponse nouvelle et moderne à la question d'origine liée pour vous ici .