Comment puis-je obtenir de l'année, le mois, le jour, les heures, les minutes, les secondes et les millisecondes de l'instant actuel en Java? Je voudrais avoir comme Strings
.
Réponses
Trop de publicités?Faire usage de l' java.util.Calendar
.
Calendar now = Calendar.getInstance();
int year = now.get(Calendar.YEAR);
int month = now.get(Calendar.MONTH); // Note: zero based!
int day = now.get(Calendar.DAY_OF_MONTH);
int hour = now.get(Calendar.HOUR_OF_DAY);
int minute = now.get(Calendar.MINUTE);
int second = now.get(Calendar.SECOND);
int millis = now.get(Calendar.MILLISECOND);
System.out.printf("%d-%02d-%02d %02d:%02d:%02d.%03d", year, month + 1, day, hour, minute, second, millis);
Ceci affiche de maintenant (je suis à GMT-4):
2010-04-16 11:15:17.816
Pour convertir un int
de String
, l'utilisation de String#valueOf()
.
Si votre intention est après tout arranger et de les afficher dans un homme format convivial, alors je vous suggère d'utiliser java.text.SimpleDateFormat
à la place. Cliquez sur le lien, vous verrez une table de modèles de lettres. Plusieurs exemples:
Date now = new Date(); // java.util.Date, NOT java.sql.Date or java.sql.Timestamp!
String format1 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ").format(now);
String format2 = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss Z").format(now);
String format3 = new SimpleDateFormat("yyyyMMddHHmmss").format(now);
System.out.println(format1);
System.out.println(format2);
System.out.println(format3);
Ce qui donne:
2010-04-16T11:15:17.816-0400 Fri, 16 Apr 2010 11:15:17 -0400 20100416111517
Interrupteur à joda-time et vous pouvez le faire en trois lignes
DateTime jodaTime = new DateTime();
DateTimeFormatter formatter = DateTimeFormat.forPattern("YYYY-MM-dd HH:mm:ss.SSS");
System.out.println("jodaTime = " + formatter.print(jodaTime));
Vous avez également un accès direct aux divers champs de la date sans l'aide d'un Calendrier.
System.out.println("year = " + jodaTime.getYear());
System.out.println("month = " + jodaTime.getMonthOfYear());
System.out.println("day = " + jodaTime.getDayOfMonth());
System.out.println("hour = " + jodaTime.getHourOfDay());
System.out.println("minute = " + jodaTime.getMinuteOfHour());
System.out.println("second = " + jodaTime.getSecondOfMinute());
System.out.println("millis = " + jodaTime.getMillisOfSecond());
La sortie est comme suit:
jodaTime = 2010-04-16 18:09:26.060
year = 2010
month = 4
day = 16
hour = 18
minute = 9
second = 26
millis = 60
Ou de l'utilisation de java.sql.Timestamp. Le calendrier est un peu lourd,je déconseille de l'utiliser dans le code de production. Joda est mieux.
import java.sql.Timestamp;
public class DateTest {
/**
* @param args
*/
public static void main(String[] args) {
System.out.println(new Timestamp(System.currentTimeMillis()));
}
}
import java.util.Calendar;
int YEAR = Calendar.getInstance().get(Calendar.YEAR);
int MONTH = Calendar.getInstance().get(Calendar.MONTH);
int DAY_OF_WEEK = Calendar.getInstance().get(Calendar.DAY_OF_WEEK);
int HOUR = Calendar.getInstance().get(Calendar.HOUR);
int MINUTE = Calendar.getInstance().get(Calendar.MINUTE);
int SECOND = Calendar.getInstance().get(Calendar.SECOND);