web-dev-qa-db-fra.com

Java Horodatage - Comment créer un horodatage avec la date du 23/09/2007?

Comment créer un horodatage avec la date du 23/09/2007?

94
pigouina

Par Timestamp, je suppose que vous voulez dire Java.sql.Timestamp . Vous remarquerez que cette classe a un constructeur qui accepte un argument long. Vous pouvez analyser cela en utilisant la classe DateFormat:

_DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
Date date = dateFormat.parse("23/09/2007");
long time = date.getTime();
new Timestamp(time);
_
147
Adam Paynter

Et ça?

Java.sql.Timestamp timestamp = Java.sql.Timestamp.valueOf("2007-09-23 10:10:10.0");
110
pigouina

Que voulez-vous dire par horodatage? Si vous voulez dire millisecondes depuis l’époque Unix:

GregorianCalendar cal = new GregorianCalendar(2007, 9 - 1, 23);
long millis = cal.getTimeInMillis();

Si vous voulez un objet Java.sql.Timestamp réel:

Timestamp ts = new Timestamp(millis);
17
Matthew Flaschen

Selon le API , le constructeur qui accepterait l'année, le mois, etc., est déconseillé. Au lieu de cela, vous devriez utiliser le constructeur qui accepte un long. Vous pouvez utiliser une implémentation Calendrier pour construire la date de votre choix et accéder à la représentation temporelle en tant que long, par exemple avec la méthode getTimeInMillis .

4
Philipp

Vous pouvez également faire ce qui suit:

// untested
Calendar cal = GregorianCalendar.getInstance();
cal.set(Calendar.DAY_OF_MONTH, 23);// I might have the wrong Calendar constant...
cal.set(Calendar.MONTH, 8);// -1 as month is zero-based
cal.set(Calendar.YEAR, 2009);
Timestamp tstamp = new Timestamp(cal.getTimeInMillis());
4
Alex

Par souci d’exhaustivité, une solution avec Joda-Time version 2.5 et sa DateTime classe:

new Timestamp(new DateTime(2007, 9, 23, 0, 0, DateTimeZone.forID( "America/Montreal" )).getMillis())
1
user152468