Как я могу получить год, месяц, день, часы, минуты, секунды и миллисекунды текущего момента в Java? Я хотел бы иметь их как Strings
.
Для этого вы можете использовать геттеры java.time.LocalDateTime
.
LocalDateTime now = LocalDateTime.now();
int year = now.getYear();
int month = now.getMonthValue();
int day = now.getDayOfMonth();
int hour = now.getHour();
int minute = now.getMinute();
int second = now.getSecond();
int millis = now.get(ChronoField.MILLI_OF_SECOND); // Note: no direct getter available.
System.out.printf("%d-%02d-%02d %02d:%02d:%02d.%03d", year, month, day, hour, minute, second, millis);
Или, когда вы еще не используете Java 8, используйте java.util.Calendar
.
Calendar now = Calendar.getInstance();
int year = now.get(Calendar.YEAR);
int month = now.get(Calendar.MONTH) + 1; // 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, day, hour, minute, second, millis);
В любом случае, на данный момент это печатает:
2010-04-16 15:15:17.816
Чтобы преобразовать int
в String
, используйте String # valueOf ()
.
Если вы намерены в конце концов упорядочить и отобразить их в удобном для человека строковом формате, то лучше использовать либо Java8 java.time.format.DateTimeFormatter
( учебник здесь ),
LocalDateTime now = LocalDateTime.now();
String format1 = now.format(DateTimeFormatter.ISO_DATE_TIME);
String format2 = now.atZone(ZoneId.of("GMT")).format(DateTimeFormatter.RFC_1123_DATE_TIME);
String format3 = now.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss", Locale.ENGLISH));
System.out.println(format1);
System.out.println(format2);
System.out.println(format3);
или когда вы еще не используете Java 8, используйте java.text.SimpleDateFormat
:
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.SSS", Locale.ENGLISH).format(now);
String format2 = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss Z", Locale.ENGLISH).format(now);
String format3 = new SimpleDateFormat("yyyyMMddHHmmss", Locale.ENGLISH).format(now);
System.out.println(format1);
System.out.println(format2);
System.out.println(format3);
В любом случае это дает:
2010-04-16T15:15:17.816 Fri, 16 Apr 2010 15:15:17 GMT 20100416151517
Или используйте java.sql.Timestamp. Календарь довольно тяжелый, я бы не рекомендовал использовать его в производственном коде. Джода лучше.
import java.sql.Timestamp;
public class DateTest {
/**
* @param args
*/
public static void main(String[] args) {
System.out.println(new Timestamp(System.currentTimeMillis()));
}
}
См. Документацию по API для класса java.util.Calendar и его производных ( вас может особенно заинтересовать класс GregorianCalendar).
Переключитесь на joda-time , и вы можете сделать это в трех строках
DateTime jodaTime = new DateTime();
DateTimeFormatter formatter = DateTimeFormat.forPattern("YYYY-MM-dd HH:mm:ss.SSS");
System.out.println("jodaTime = " + formatter.print(jodaTime));
Вы также иметь прямой доступ к отдельным полям даты без использования календаря.
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());
Вывод выглядит следующим образом:
jodaTime = 2010-04-16 18:09:26.060
year = 2010
month = 4
day = 16
hour = 18
minute = 9
second = 26
millis = 60
Согласно http://www.joda.org/joda-time/
Joda-Time является стандартной библиотекой даты и времени де-факто для Java. {{ 1}} Начиная с Java SE 8, пользователям предлагается перейти на java.time (JSR-310).
Calendar now = new Calendar () // или new GregorianCalendar (), или любой другой вариант вам нужно
сейчас. МЕСЯЦ сейчас. ЧАС
и т. д.