Comment obtenir l'horodatage actuel au format chaîne en Java? "aaaa.MM.dd.HH.mm.ss"


Comment obtenir l'horodatage au format chaîne en Java? "aaaa. MM. jj. HH. mm. ss"

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

C'est ce que j'ai, mais Timestamp() nécessite un paramètre...

Author: riccardo.cardin, 2014-04-14

5 answers

Remplacer

new Timestamp();

Avec

new java.util.Date()

, Car il n'y a pas de constructeur par défaut pour Timestamp, ou vous pouvez le faire avec la méthode:

new Timestamp(System.currentTimeMillis());
 145
Author: Jigar Joshi, 2014-11-25 15:57:25

Utilisez la classe java.util.Date au lieu de l'horodatage.

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

Cela vous donnera la date actuelle dans le format spécifié.

 113
Author: dimoniy, 2014-04-14 19:34:47

Vous pouvez utiliser java.util.Date au lieu de l'horodatage:

String timeStamp = new SimpleDateFormat("yyyy.MM.dd.HH.mm.ss").format(new Date());
 25
Author: Kakarot, 2014-04-14 19:36:09

Tl; dr

Utilisez uniquement java moderne.temps classes. N'utilisez jamais les terribles classes héritées telles que SimpleDateFormat, Date, ou java.sql.Timestamp.

ZonedDateTime                    // Represent a moment as perceived in the wall-clock time used by the people of a particular region ( a time zone).
.now(                            // Capture the current moment.
    ZoneId.of( "Africa/Tunis" )  // Specify the time zone using proper Continent/Region name. Never use 3-4 character pseudo-zones such as PDT, EST, IST. 
)                                // Returns a `ZonedDateTime` object. 
.format(                         // Generate a `String` object containing text representing the value of our date-time object. 
    DateTimeFormatter.ofPattern( "uuuu.MM.dd.HH.mm.ss" )
)

Utiliser java.sql uniquement pour le transfert de base de données

Le java.types sql, tels que java.sql.Timestamp, ne doit être utilisé que pour le transfert dans et hors de la base de données. Convertir immédiatement en java.types de temps dans Java 8 et versions ultérieures.

java.time.Instant

Un java.sql.Timestamp correspond à un java.time.Instant, un moment dans le scénario de L'UTC.

java.sql.Timestamp ts = myResultSet.getTimestamp( … );
Instant instant = ts.toInstant(); 

Fuseau horaire

Appliquer le fuseau horaire souhaité / attendu pour obtenir un ZonedDateTime.

ZoneId zoneId = ZoneId.of( "America/Montreal" );
ZonedDateTime zdt = ZonedDateTime.ofInstant( instant , zoneId );

Chaînes formatées

Utiliser un DateTimeFormatter pour générer votre chaîne. Les codes de motif sont similaires à ceux de java.text.SimpleDateFormat mais pas exactement, alors lisez attentivement le doc.

DateTimeFormatter formatter = DateTimeFormatter.ofPattern( "uuuu.MM.dd.HH.mm.ss" );
String output = zdt.format( formatter );

Ce format particulier est ambigu quant à sa signification exacte car il ne contient aucune indication de offset-from-UTC ou fuseau horaire.

ISO 8601

Si vous avez votre mot à dire, je vous suggère d'envisager d'utiliser les formats standard ISO 8601 plutôt que de lancer les vôtres. Le format standard est assez similaire au vôtre. Par exemple:
2016-02-20T03:26:32+05:30.

Le java.les classes de temps utilisent ces formats standard par défaut, donc pas besoin de spécifier un modèle. La classe ZonedDateTime étend le format standard en ajoutant le nom du fuseau horaire (une amélioration sage).

String output = zdt.toString(); // Example: 2007-12-03T10:15:30+01:00[Europe/Paris]

Convertir en java.sql

Vous pouvez convertir à partir de java.retour à java.sql.Timestamp. Extraire un Instant du ZonedDateTime.

De nouvelles méthodes ont été ajoutées aux anciennes classes pour faciliter la conversion vers/depuis java.les classes de temps.

java.sql.Timestamp ts = java.sql.Timestamp.from( zdt.toInstant() );
 12
Author: Basil Bourque, 2018-09-11 17:19:59

Une approche plus appropriée consiste à spécifier une région Locale en tant que paramètre dans le constructeur. L'exemple ci-dessous utilise une région locale américaine. Le formatage de la date est sensible aux paramètres régionaux et utilise les paramètres régionaux pour adapter les informations relatives aux coutumes et conventions de la région de l'utilisateur Locale (Java Platform SE 7)

String timeStamp = new SimpleDateFormat("yyyy.MM.dd.HH.mm.ss", Locale.US).format(new Date());
 6
Author: user3144836, 2016-02-23 02:00:40