Besoin d’obtenir l’horodatage actuel en Java

Je dois obtenir l’horodatage actuel en Java, au format MM/DD/YYYY h:mm:ss AM/PM ,

Par exemple: 06/01/2000 10:01:50 AM

J’ai aussi besoin que ce soit Threadsafe.

Puis-je utiliser quelque chose comme ça?

 java.util.Date date = new java.util.Date(); System.out.println(new Timestamp(date.getTime())); 

Ou les exemples discutés sur le lien ici .

La sécurité des threads de SimpleDateFormat ne devrait pas poser problème si vous la créez dans le même bloc de méthode que vous l’utilisez. En d’autres termes, vous ne l’ assignez pas en tant que variable statique ou instance d’une classe et la réutilisez dans une ou plusieurs méthodes pouvant être appelées par plusieurs threads. Ce n’est que de cette façon que la sécurité des threads de SimpleDateFormat sera exposée. Vous pouvez cependant réutiliser en toute sécurité la même instance de SimpleDateFormat dans le même bloc de méthode que celui auquel le thread actuel accède uniquement.

De même, la classe java.sql.Timestamp que vous utilisez ne doit pas être utilisée de manière spécifique à l’API JDBC afin de pouvoir stocker ou récupérer un DATETIME colonne TIMESTAMP / DATETIME dans une firebase database SQL et le convertir depuis / à java.util.Date .

Donc, cela devrait faire:

 Date date = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy h:mm:ss a"); Ssortingng formattedDate = sdf.format(date); System.out.println(formattedDate); // 12/01/2011 4:48:16 PM 

Imprimez un horodatage en Java, en utilisant java.sql.Timestamp.

 import java.sql.Timestamp; import java.util.Date; public class GetCurrentTimeStamp { public static void main( Ssortingng[] args ){ java.util.Date date= new java.util.Date(); System.out.println(new Timestamp(date.getTime())); } } 

Cela imprime:

 2014-08-07 17:34:16.664 

Imprimez un horodatage en Java en utilisant SimpleDateFormat sur une ligne simple.

 import java.util.Date; import java.text.SimpleDateFormat; class Runner{ public static void main(Ssortingng[] args){ System.out.println( new SimpleDateFormat("MM/dd/yyyy HH:mm:ss").format(new Date())); } } 

Impressions:

 08/14/2014 14:10:38 

Légende du format de date Java:

 G Era designation Text AD y Year Year 1996; 96 M Month in year Month July; Jul; 07 w Week in year Number 27 W Week in month Number 2 D Day in year Number 189 d Day in month Number 10 F Day of week in month Number 2 E Day in week Text Tuesday; Tue a Am/pm marker Text PM H Hour in day (0-23) Number 0 k Hour in day (1-24) Number 24 K Hour in am/pm (0-11) Number 0 h Hour in am/pm (1-12) Number 12 m Minute in hour Number 30 s Second in minute Number 55 S Millisecond Number 978 z Time zone General time zone Pacific Standard Time; PST; GMT-08:00 Z Time zone RFC 822 time zone -0800 

Essayez cette solution en ligne simple:

 import java.util.Date; Ssortingng timestamp = new java.text.SimpleDateFormat("MM/dd/yyyy h:mm:ss a").format(new Date()); 

Le fait que SimpleDateFormat ne soit pas SimpleDateFormat threads ne signifie pas que vous ne pouvez pas l’utiliser. Cela signifie simplement que vous ne devez pas utiliser une seule instance (potentiellement, mais pas nécessairement static ) accessible à partir de plusieurs threads à la fois.

Au lieu de cela, assurez-vous simplement de créer un nouveau SimpleDateFormat pour chaque thread. Les instances créées en tant que variables locales au sein d’une méthode sont sécurisées par définition, car elles ne peuvent pas être atteintes à partir de threads concurrents.

Vous voudrez peut -être jeter un coup d’œil à la classe ThreadLocal , même si je vous recommande de créer une nouvelle instance là où vous en avez besoin. Vous pouvez bien entendu avoir la définition de format définie comme une static final Ssortingng DATE_FORMAT_PATTERN = "..."; quelque part et l’utiliser pour chaque nouvelle instance.

java.time

A partir de Java 8+, vous pouvez utiliser le package java.time . Plus précisément, utilisez DateTimeFormatterBuilder et DateTimeFormatter pour mettre en forme les modèles et les littéraux.

 DateTimeFormatter formatter = new DateTimeFormatterBuilder() .appendPattern("MM").appendLiteral("/") .appendPattern("dd").appendLiteral("/") .appendPattern("yyyy").appendLiteral(" ") .appendPattern("hh").appendLiteral(":") .appendPattern("mm").appendLiteral(":") .appendPattern("ss").appendLiteral(" ") .appendPattern("a") .toFormatter(); System.out.println(LocalDateTime.now().format(formatter)); 

Le résultat …

 06/22/2015 11:59:14 AM 

Ou si vous voulez un fuseau horaire différent…

 // system default System.out.println(formatter.withZone(ZoneId.systemDefault()).format(Instant.now())); // Chicago System.out.println(formatter.withZone(ZoneId.of("America/Chicago")).format(Instant.now())); // Kathmandu System.out.println(formatter.withZone(ZoneId.of("Asia/Kathmandu")).format(Instant.now())); 

Le résultat …

 06/22/2015 12:38:42 PM 06/22/2015 02:08:42 AM 06/22/2015 12:53:42 PM 

Vous pouvez utiliser java.util.Date avec un format de chaîne de date directe:

 Ssortingng timeStamp = new SimpleDateFormat("yyyy.MM.dd.HH.mm.ss").format(new Date()); 

Joda-Time

Voici le même type de code mais en utilisant la bibliothèque tierce Joda-Time 2.3.

Dans la vraie vie, je spécifierais un fuseau horaire , car utiliser une zone par défaut est généralement une mauvaise pratique. Mais omis ici pour simplifier l’exemple.

 org.joda.time.DateTime now = new DateTime(); org.joda.time.format.DateTimeFormatter formatter = DateTimeFormat.forPattern( "MM/dd/yyyy h:mm:ss a" ); Ssortingng nowAsSsortingng = formatter.print( now ); System.out.println( "nowAsSsortingng: " + nowAsSsortingng ); 

Quand courir…

 nowAsSsortingng: 11/28/2013 11:28:15 PM 

Je l’ai fait comme ça quand je voulais un tmiestamp

  Ssortingng timeStamp = new SimpleDateFormat("yyyyMMddHHmmss").format(Calendar.getInstance().getTime()); 

J’espère que ça aide 🙂 En tant que débutant, je pense que c’est explicite

Je pense que vous devez également importer java.text.SimpleDateFormat; en-tête pour que ça marche :))

 Ssortingng.format("{0:dddd, MMMM d, yyyy hh:mm tt}", dt); 

Eh bien, parfois, cela est également utile.

 import java.util.Date; public class DisplayDate { public static void main(Ssortingng args[]) { // Instantiate an object Date date = new Date(); // display time and date System.out.println(date.toSsortingng());}} 

sortie d’échantillon: Mon Jul 03 19:07:15 IST 2017

  public class TimeStampExample { private static final SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd.HH.mm.ss"); Timestamp timestamp = new Timestamp(System.currentTimeMillis()); public static void main(Ssortingng[] args) { System.out.println(timestamp); System.out.println(timestamp.getTime()); Instant instant = timestamp.toInstant(); System.out.println(instant); System.out.println(instant.toEpochMilli()); Timestamp timestamp = new Timestamp(System.currentTimeMillis()); System.out.println(timestamp); Date date = new Date(); System.out.println(new Timestamp(date.getTime())); System.out.println(timestamp.getTime()); System.out.println(sdf.format(timestamp)); } }