Как получить год, месяц, день, часы, минуты, секунды и миллисекунды текущего момента в Java?

Как я могу получить год, месяц, день, часы, минуты, секунды и миллисекунды текущего момента в Java? Я хотел бы иметь их как Strings.

97
задан wattostudios 30 April 2012 в 14:31
поделиться

5 ответов

Для этого вы можете использовать геттеры 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

См. также:

237
ответ дан 24 November 2019 в 05:20
поделиться

Или используйте 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()));
    }
}
2
ответ дан 24 November 2019 в 05:20
поделиться

См. Документацию по API для класса java.util.Calendar и его производных ( вас может особенно заинтересовать класс GregorianCalendar).

-2
ответ дан 24 November 2019 в 05:20
поделиться

Переключитесь на 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).

29
ответ дан 24 November 2019 в 05:20
поделиться

Calendar now = new Calendar () // или new GregorianCalendar (), или любой другой вариант вам нужно

сейчас. МЕСЯЦ сейчас. ЧАС

и т. д.

-2
ответ дан 24 November 2019 в 05:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: