Как получить текущую дату / время в Java

Каков наилучший способ получить текущую дату / время в Java?

вопрос задан 3.03.2011
user496949
30434 репутация

24 ответов


  • 542 рейтинг

    Это зависит от того, какую форму даты / времени вы хотите:

    • Если вам нужна дата / время как одно числовое значение, то System.currentTimeMillis() дает вам это, выраженное как число миллисекунд после эпохи UNIX (как Java long ). Это значение является дельтами от UTC-времени и не зависит от локальной часовой зоны ... при условии, что системные часы установлены правильно.

    • Если вам нужна дата / время в форме, которая позволяет вам получить доступ к компонентам (год, месяц и т. Д.) В цифровом виде, вы можете использовать одно из следующих:

      • new Date() дает вам Date объекта, инициализированных текущей датой / временем. Проблема в том, что Date API-метода в основном ошибочны ... и устарели.

      • Calendar.getInstance() дает вам Calendar объекта инициализирован с текущей датой / временем, используя по умолчанию Locale и TimeZone . Другие перегрузки позволяют использовать определенные Locale и / или long . Календарь работает ... но API все еще громоздки.

      • long дает объект времени Joda, инициализированный текущей датой / временем, используя часовой пояс по умолчанию и хронологию. Есть много других альтернатив Джоды ... слишком много, чтобы описать здесь. (Но обратите внимание, что некоторые люди сообщают, что время Joda имеет проблемы с производительностью, например, Jodatime LocalDateTime работает медленно при первом использовании .)

      • в Java 8 вызов long и long даст вам представления 1 для текущей даты / времени.

    До появления Java 8 большинство людей, которые знают об этих вещах, рекомендовали Joda-time иметь (на сегодняшний день) лучшие Java-API для работы с вычислениями времени и продолжительности. С Java 8 это уже не так. Однако, если вы уже используете Joda время в вашем коде, нет сильной 2 причины миграции.


    1 - Обратите внимание, что LocalDateTime не включает часовой пояс. Поскольку javadoc говорит: «Он не может представлять мгновение на временной линии без дополнительной информации, такой как смещение или временная зона».

    2 - Ваш код не сломается, если вы этого не сделаете, и вы не получите предупреждения об устаревании. Конечно, кодовая база Joda, вероятно, перестанет получать обновления, но вряд ли они понадобятся. Нет обновлений означает стабильность, и это хорошо .

    ответ дан Stephen C, с репутацией 499789, 3.03.2011
  • 345 рейтинг

    Если вам просто нужно вывести отметку времени в формате YYYY.MM.DD-HH.MM.SS (очень частый случай), то вот как это сделать:

     String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(Calendar.getInstance().getTime());
     
    ответ дан Liebster Kamerad, с репутацией 3556, 5.08.2011
  • 92 рейтинг

    Если вы хотите, чтобы текущая дата была String, попробуйте следующее:

     DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
    Date date = new Date();
    System.out.println(dateFormat.format(date));
     

    или

     DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
    Calendar cal = Calendar.getInstance();
    System.out.println(dateFormat.format(cal.getTime()));
     

    http://www.mkyong.com/java/java-how-to-get-current-date-time-date-and-calender/

    ответ дан duggu, с репутацией 28305, 7.10.2013
  • 53 рейтинг

    В Java 8 это:

     LocalDateTime.now()
     

    и если вам нужна информация о часовом поясе:

     ZonedDateTime.now()
     

    и в случае, если вы хотите напечатать фантастическую форматированную строку:

     System.out.println(ZonedDateTime.now().format(DateTimeFormatter.RFC_1123_DATE_TIME))
     
    ответ дан Oleg Mikheev, с репутацией 11821, 6.10.2014
  • 40 рейтинг

    Просто создайте объект Date ...

     Date date = new Date();
     
    ответ дан Amir Afghani, с репутацией 28260, 3.03.2011
  • 35 рейтинг
        // 2015/09/27 15:07:53
        System.out.println( new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").format(Calendar.getInstance().getTime()) );
    
        // 15:07:53
        System.out.println( new SimpleDateFormat("HH:mm:ss").format(Calendar.getInstance().getTime()) );
    
        // 09/28/2015
        System.out.println(new SimpleDateFormat("MM/dd/yyyy").format(Calendar.getInstance().getTime()));
    
        // 20150928_161823
        System.out.println( new SimpleDateFormat("yyyyMMdd_HHmmss").format(Calendar.getInstance().getTime()) );
    
        // Mon Sep 28 16:24:28 CEST 2015
        System.out.println( Calendar.getInstance().getTime() );
    
        // Mon Sep 28 16:24:51 CEST 2015
        System.out.println( new Date(System.currentTimeMillis()) );
    
        // Mon Sep 28
        System.out.println( new Date().toString().substring(0, 10) );
    
        // 2015-09-28
        System.out.println( new java.sql.Date(System.currentTimeMillis()) );
    
        // 14:32:26
        Date d = new Date();
        System.out.println( (d.getTime() / 1000 / 60 / 60) % 24 + ":" + (d.getTime() / 1000 / 60) % 60 + ":" + (d.getTime() / 1000) % 60 );
    
        // 2015-09-28 17:12:35.584
        System.out.println( new Timestamp(System.currentTimeMillis()) );
    
        // Java 8
    
        // 2015-09-28T16:16:23.308+02:00[Europe/Belgrade]
        System.out.println( ZonedDateTime.now() );
    
        // Mon, 28 Sep 2015 16:16:23 +0200
        System.out.println( ZonedDateTime.now().format(DateTimeFormatter.RFC_1123_DATE_TIME) );
    
        // 2015-09-28
        System.out.println( LocalDate.now(ZoneId.of("Europe/Paris")) ); // rest zones id in ZoneId class
    
        // 16
        System.out.println( LocalTime.now().getHour() );
    
        // 2015-09-28T16:16:23.315
        System.out.println( LocalDateTime.now() );
    
    ответ дан blueberry0xff, с репутацией 2125, 6.11.2014
  • 19 рейтинг

    ТЛ; др

     Instant.now()                                         // Capture the current moment in UTC, with a resolution of nanoseconds.
     

    … или …

     ZonedDateTime.now( ZoneId.of( "America/Montreal" ) )  // Capture the current moment as seen in the wall-clock time used by the people of a particular region (a time zone).
     

    java.time

    В нескольких ответах упоминается, что классы java.time - это современная замена проблемных старых устаревших классов времени, связанных с самыми ранними версиями Java. Ниже приведена более подробная информация.

    Часовой пояс

    В других ответах не объясняется, как часовой пояс имеет решающее значение для определения текущей даты и времени. В любой данный момент дата и время изменяются по всему миру по зонам. Например, через несколько минут после полуночи новый день в Париже, Франция, в то время как «вчера» в Монреале Квебек .

    Instant

    Большая часть вашей бизнес-логики и хранения / обмена данными должна быть сделана в UTC , как наилучшая практика. Чтобы получить текущий момент в UTC с разрешением в наносекундах , используйте Instant класса.

     Instant instant = Instant.now();
     

    ZonedDateTime

    Вы можете настроить этот Instant в другие часовые пояса. Примените объект ZoneId чтобы получить ZonedDateTime .

     ZoneId z = ZoneId.of( "America/Montreal" );
    ZonedDateTime zdt = instant.atZone( z );
     

    Мы можем пропустить ZonedDateTime.now( ZoneId.of( "America/Montreal" ) ) // Capture the current moment as seen in the wall-clock time used by the people of a particular region (a time zone). и получить текущий ZonedDateTime.now( ZoneId.of( "America/Montreal" ) ) // Capture the current moment as seen in the wall-clock time used by the people of a particular region (a time zone). напрямую.

     ZonedDateTime.now( ZoneId.of( "America/Montreal" ) )  // Capture the current moment as seen in the wall-clock time used by the people of a particular region (a time zone).
     

    Всегда передавайте этот необязательный аргумент часового пояса. Если этот параметр опущен, применяется текущий часовой пояс вашего JVM. Значение по умолчанию может меняться в любой момент, даже во время выполнения. Не подвергайте свое приложение внешнему виду из-под контроля. Всегда указывайте желаемый / ожидаемый часовой пояс.

     ZonedDateTime.now( ZoneId.of( "America/Montreal" ) )  // Capture the current moment as seen in the wall-clock time used by the people of a particular region (a time zone).
     

    Затем вы можете извлечь ZonedDateTime.now( ZoneId.of( "America/Montreal" ) ) // Capture the current moment as seen in the wall-clock time used by the people of a particular region (a time zone). из ZonedDateTime.now( ZoneId.of( "America/Montreal" ) ) // Capture the current moment as seen in the wall-clock time used by the people of a particular region (a time zone). .

     ZonedDateTime.now( ZoneId.of( "America/Montreal" ) )  // Capture the current moment as seen in the wall-clock time used by the people of a particular region (a time zone).
     

    Всегда используйте ZonedDateTime.now( ZoneId.of( "America/Montreal" ) ) // Capture the current moment as seen in the wall-clock time used by the people of a particular region (a time zone). или ZonedDateTime.now( ZoneId.of( "America/Montreal" ) ) // Capture the current moment as seen in the wall-clock time used by the people of a particular region (a time zone). а не ZonedDateTime.now( ZoneId.of( "America/Montreal" ) ) // Capture the current moment as seen in the wall-clock time used by the people of a particular region (a time zone). когда вам нужен фактический момент на временной шкале. Instant типов намеренно не имеют понятия часового пояса, поэтому они представляют собой лишь приблизительное представление о возможном моменте. Чтобы получить реальный момент, вы должны назначить часовой пояс, чтобы преобразовать Instant тип в Instant и тем самым сделать его значимым.

    Instant

    Класс Instant представляет собой значение даты только без времени и без часового пояса.

     Instant 

    Струны

    Чтобы создать строку, представляющую значение даты, просто вызовите Instant классов java.time для стандартных форматов ISO 8601 .

     Instant 

    … или …

     Instant 

    Класс Instant расширяет стандартный формат, мудро добавляя имя часового пояса в квадратных скобках.

    Для других форматов поиск переполнения стека для многих вопросов и ответов в классе Instant .

    Избегайте Instant

    Вопреки комментарию по Вопросу от RamanSB, вы не должны использовать Instant класса для текущего времени.

    У Instant намеренно отсутствует какая-либо информация о часовом поясе или смещении от UTC. Таким образом, это не подходит, когда вы отслеживаете определенный момент на временной шкале. Конечно, не подходит для захвата текущего момента.

    «Локальная» формулировка противоречит интуиции. Это означает любую местность, а не любую конкретную местность. Например, Рождество в этом году начинается в полночь 25 декабря: Instant , чтобы быть представленными как Instant . Но это означает полночь в разных точках мира в разное время. Midnight происходит сначала в Кирибати , позже в Новой Зеландии, спустя несколько часов в Индии и т. Д., И еще несколько часов, проходящих до Рождества, начинаются во Франции, когда дети в Канаде все еще ждут этого дня. Каждый из этих рождественских очков будет представлен как отдельный Instant .


    Снаружи ваша система

    Если вы не можете доверять своим системным часам, см. Java: Получить текущую дату и время с сервера, а не системные часы и мой ответ .

    фотография пары внешних устройств радиочасов

    Instant

    Чтобы использовать альтернативного поставщика текущего момента, напишите подкласс абстрактного класса Instant .

    Вы можете передать свою реализацию Instant в качестве аргумента различным методам java.time . Например, Instant instant = Instant.now(); .

     Instant instant = Instant.now();
     

    Для целей тестирования обратите внимание на альтернативные реализации Instant instant = Instant.now(); доступных статически из Instant instant = Instant.now(); : Instant instant = Instant.now(); , Instant instant = Instant.now(); , Instant instant = Instant.now(); и более.


    О java.time

    Рамка java.time встроена в Java 8 и более поздние версии . Эти классы вытесняют неприятные старые устаревшие классы времени, такие как Instant instant = Instant.now(); , Instant instant = Instant.now(); и Instant instant = Instant.now(); .

    Проект Joda-Time , теперь в режиме обслуживания , советует перейти на классы java.time .

    Чтобы узнать больше, ознакомьтесь с учебным пособием Oracle . И поиск Stack Overflow для многих примеров и объяснений. Спецификация - JSR 310 .

    Вы можете обменивать объекты java.time непосредственно с вашей базой данных. Используйте JDBC-драйвер, совместимый с JDBC 4.2 или новее. Нет необходимости в строках, нет необходимости в ZonedDateTime классах.

    Где можно получить классы java.time?

    • Java SE 8 , Java SE 9 и более поздние версии
      • Встроенный.
      • Часть стандартного Java API с интегрированной реализацией.
      • Java 9 добавляет некоторые незначительные функции и исправления.
    • Java SE 6 и Java SE 7
      • Большая часть функциональных возможностей java.time включена обратно в Java 6 и 7 в ThreeTen-Backport .
    • Android
      • Более поздние версии реализаций пакетов Android классов java.time.
      • Для более ранних Android проект ThreeTenABP адаптирует ThreeTen-Backport (упомянутый выше). См. Раздел Как использовать ThreeTenABP ....

    Проект ThreeTen-Extra расширяет java.time с дополнительными классами. Этот проект является доказательством возможных будущих дополнений к java.time. Здесь вы можете найти полезные классы, такие как ZonedDateTime , ZonedDateTime , ZonedDateTime и более .

    ответ дан Basil Bourque, с репутацией 96579, 7.09.2016
  • 18 рейтинг

    Использование:

     String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(Calendar.getInstance().getTime());
    System.out.println(timeStamp );
     

    (Работает.)

    ответ дан user1719182, с репутацией 181, 18.03.2013
  • 14 рейтинг

    Существует много разных методов:

    ответ дан Greg Hewgill, с репутацией 645957, 3.03.2011
  • 10 рейтинг

    Создайте объект даты и просто распечатайте его.

     Date d = new Date(System.currentTimeMillis());
    System.out.print(d);
     
    ответ дан Subodh, с репутацией 487, 11.06.2013
  • 9 рейтинг

    Подобно описанным выше решениям. Но я всегда искал этот кусок кода:

     Date date=Calendar.getInstance().getTime();
    System.out.println(date);
     
    ответ дан JeffJak, с репутацией 853, 2.12.2013
  • 9 рейтинг

    Вы посмотрели на java.util.Date? Это именно то, что вы хотите.

    ответ дан Starkey, с репутацией 8722, 3.03.2011
  • 7 рейтинг
     java.util.Date date = new java.util.Date();
     

    Он автоматически заполняется с момента его создания.

    ответ дан Rudy, с репутацией 4135, 3.03.2011
  • 6 рейтинг

    1. Понять класс java.util.Date.

    1.1 Как получить текущую дату

     import java.util.Date;
    
    class Demostration{
        public static void main(String[]args){
            Date date = new Date(); // date object
            System.out.println(date); // Try to print the date object
        }
    }
     

    1.2. Как использовать метод getTime ()

     import java.util.Date;
    public class Main {
        public static void main(String[]args){
            Date date = new Date();
            long timeInMilliSeconds = date.getTime();
            System.out.println(timeInMilliSeconds);
        }
    }
     

    Это возвращает число миллисекунд с 1 января 1970 года, 00:00:00 GMT для сравнения времени.

    1.3. Как форматировать время с помощью класса SimpleDateFormat

     import java.text.DateFormat;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    class Demostration{
        public static void main(String[]args){
            Date date=new Date();
            DateFormat dateFormat=new SimpleDateFormat("yyyy-MM-dd");
            String formattedDate=dateFormat.format(date);
            System.out.println(formattedDate);
        }
    }
     

    Также попробуйте использовать различные шаблоны формата, такие как «yyyy-MM-dd hh: mm: ss» и выбрать желаемый шаблон. http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html

    2. Поймите класс java.util.Calendar

    2.1 Использование класса Calendar для получения текущей метки времени

     import java.util.Calendar;
    
    class Demostration{
        public static void main(String[]args){
            Calendar calendar=Calendar.getInstance();
            System.out.println(calendar.getTime());
        }
    }
     

    2.2 Попробуйте использовать setTime и другие методы набора для установки календаря на другую дату.

    Источник: http://javau91.blogspot.com/

    ответ дан u91, с репутацией 180, 22.09.2015
  • 6 рейтинг

    Я считаю, что это лучший способ:

     DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
    Calendar cal = Calendar.getInstance();
    System.out.println(dateFormat.format(cal.getTime())); // 2014/08/06 16:00:22
     
    ответ дан kelevra88, с репутацией 812, 31.10.2014
  • 4 рейтинг

    Использование:

     SimpleDateFormat sdf = new SimpleDateFormat("yyyy:MM:dd::HH:mm:ss");
    System.out.println(sdf.format(System.currentTimeMillis()));
     

    Оператор печати печатает время, когда он вызывается, а не когда SimpleDateFormat был создан. Поэтому его можно многократно вызывать без создания каких-либо новых объектов.

    ответ дан joe pelletier, с репутацией 187, 22.04.2016
  • 4 рейтинг

    Для java.util.Date просто создайте новую дату ()

     DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
    Date date = new Date();
    System.out.println(dateFormat.format(date)); //2016/11/16 12:08:43
     

    Для java.util.Calendar используется Calendar.getInstance ()

     DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
    Calendar cal = Calendar.getInstance();
    System.out.println(dateFormat.format(cal)); //2016/11/16 12:08:43
     

    Для java.time.LocalDateTime используется LocalDateTime.now ()

     DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss");
    LocalDateTime now = LocalDateTime.now();
    System.out.println(dtf.format(now)); //2016/11/16 12:08:43
     

    Для java.time.LocalDate используется LocalDate.now ()

     DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy/MM/dd");
    LocalDate localDate = LocalDate.now();
    System.out.println(dtf.format(localDate)); //2016/11/16
     

    Ссылка: https://www.mkyong.com/java/java-how-to-get-current-date-time-date-and-calender/

    ответ дан amit pandya, с репутацией 658, 20.09.2017
  • 3 рейтинг

    Как уже упоминалось, базовая Date () может делать то, что вам нужно, с точки зрения получения текущего времени. В моем недавнем опыте работы с датами Java существует много странностей со встроенными классами (а также устаревание многих методов класса Date). Одна странность, которая выделялась для меня, заключалась в том, что месяцы основаны на индексе 0, который с технической точки зрения имеет смысл, но в реальном выражении может быть очень запутанным.

    Если вас беспокоит только текущая дата, которая должна быть достаточной - однако, если вы намерены делать много манипуляций / вычислений с датами, это может быть очень полезно использовать стороннюю библиотеку (так многие существуют, потому что многие разработчики Java были недовольны встроенная функциональность).

    Я второй рекомендации Стивена C, поскольку я нашел, что Joda-время очень полезно для упрощения моей работы с датами, также очень хорошо документировано, и вы можете найти множество полезных примеров в Интернете. Я даже закончил писать статический класс-оболочку (как DateUtils), который я использую для консолидации и упрощения всех моих общих манипуляций с датами.

    ответ дан David Fioretti, с репутацией 106, 3.03.2011
  • 3 рейтинг

    Посмотрите на класс Date . Существует также новый класс Calendar, который является предпочтительным методом выполнения многих операций даты и времени (многие методы в Дате устарели).

    Если вам просто нужна текущая дата, то либо создайте новый объект Date, либо вызовите Calendar.getInstance(); .

    ответ дан Michael Berry, с репутацией 41913, 3.03.2011
  • 1 рейтинг
     import java.util.*;
    import java.text.*;
    
    public class DateDemo {
       public static void main(String args[]) {
          Date dNow = new Date( );
          SimpleDateFormat ft = 
          new SimpleDateFormat ("E yyyy.MM.dd 'at' hh:mm:ss a zzz");
          System.out.println("Current Date: " + ft.format(dNow));
       }
    }
     

    вы можете использовать дату для текущих данных fet. поэтому использование SimpleDateFormat получить формат

    ответ дан Madhuka Dilhan, с репутацией 748, 31.05.2016
  • 1 рейтинг

    Новый API-интерфейс Data-Time представлен с рассветом Java 8. Это связано с следующими проблемами, которые были вызваны старым API данных.

    Трудно обрабатывать часовой пояс: нужно написать много кода для обработки часовых поясов.

    Not Thread Safe: java.util.Date не является потокобезопасным.

    Так что посмотрите вокруг с Java 8

     import java.time.LocalDate;
    import java.time.LocalTime;
    import java.time.LocalDateTime;
    import java.time.Month;
    
    
    public class DataTimeChecker {
    
        public static void main(String args[]) {
            DataTimeChecker dateTimeChecker = new DataTimeChecker();
            dateTimeChecker.DateTime();
        }
    
        public void DateTime() {
            // Get the current date and time
            LocalDateTime currentTime = LocalDateTime.now();
            System.out.println("Current DateTime: " + currentTime);
    
            LocalDate date1 = currentTime.toLocalDate();
            System.out.println("Date : " + date1);
    
            Month month = currentTime.getMonth();
            int day = currentTime.getDayOfMonth();
            int seconds = currentTime.getSecond();
    
            System.out.println("Month : " + month);
            System.out.println("Day : " + day);
            System.out.println("Seconds : " + seconds);
    
            LocalDateTime date2 = currentTime.withDayOfMonth(17).withYear(2018);
            System.out.println("Date : " + date2);
    
            //Prints 17 May 2018
            LocalDate date3 = LocalDate.of(2018, Month.MAY, 17);
            System.out.println("Date : " + date3);
    
            //Prints 04 hour 45 minutes
            LocalTime date4 = LocalTime.of(4, 45);
            System.out.println("Date : " + date4);
    
            // Convert to a String 
            LocalTime date5 = LocalTime.parse("20:15:30");
            System.out.println("Date : " + date5);
        }
    }
     

    Вывод кодирования выше:

     Current DateTime: 2018-05-17T04:40:34.603
    Date : 2018-05-17
    Month : MAY
    Day : 17
    Seconds : 34
    Date : 2018-05-17T04:40:34.603
    Date : 2018-05-17
    Date : 04:45
    Date : 20:15:30
     
    ответ дан Dulith De Cozta, с репутацией 3768, 17.05.2018
  • 1 рейтинг
      System.out.println( new SimpleDateFormat("yyyy:MM:dd - hh:mm:ss a").format(Calendar.getInstance().getTime()) );
        //2018:02:10 - 05:04:20 PM
     

    дата / время с AM / PM

    ответ дан Shinwar ismail, с репутацией 105, 10.02.2018
  • 0 рейтинг

    Вы можете использовать объект и формат Date самостоятельно. Трудно отформатировать и потребовать больше кодов, например,

     Date dateInstance = new Date();
    int year = dateInstance.getYear()+1900;//Returns:the year represented by this date, minus 1900.
    int date = dateInstance.getDate();
    int month = dateInstance.getMonth();
    int day = dateInstance.getDay();
    int hours = dateInstance.getHours();
    int min = dateInstance.getMinutes();
    int sec = dateInstance.getSeconds();
    
    String dayOfWeek = "";
    switch(day){
        case 0:
            dayOfWeek = "Sunday";
            break;
        case 1:
            dayOfWeek = "Monday";
            break;
        case 2:
            dayOfWeek = "Tuesday";
            break;
        case 3:
            dayOfWeek = "Wednesday";
            break;
        case 4:
            dayOfWeek = "Thursday";
            break;
        case 5:
            dayOfWeek = "Friday";
            break;
        case 6:
            dayOfWeek = "Saturday";
            break;
    }
    System.out.println("Date: " + year +"-"+ month + "-" + date + " "+ dayOfWeek);
    System.out.println("Time: " + hours +":"+ min + ":" + sec);
     

    вывод:

     Date: 2017-6-23 Sunday
    Time: 14:6:20
     

    Как вы можете видеть, это худший способ, которым вы можете это сделать, и, согласно документации оракула, он устарел .

    Oracle doc:

    Класс Date представляет определенный момент времени с точностью до миллисекунды.

    До JDK 1.1 класс Date имел две дополнительные функции. Это позволило интерпретировать даты как год, месяц, день, час, минуту и ​​второе значение. Это также позволило форматировать и разбор строк даты. К сожалению, API для этих функций не поддавался интернационализации. Начиная с JDK 1.1, класс Calendar должен использоваться для преобразования между датами и временными полями, а класс DateFormat должен использоваться для форматирования и синтаксического анализа строк даты. Соответствующие методы в Дате устарели.

    Таким образом, вы можете использовать Calendar класса,

     Calendar.YEAR;
    //and lot more
     

    Чтобы получить текущее время, вы можете использовать:

     Calendar rightNow = Calendar.getInstance();
     

    Doc:

    Как и другие языковые классы, Calendar предоставляет метод класса getInstance для получения в целом полезного объекта этого типа. Метод Calendar's getInstance возвращает объект Calendar , поля календаря которого были инициализированы текущей датой и временем

    Ниже код для получения только даты

     Date dateInstance = new Date();
    int year = dateInstance.getYear()+1900;//Returns:the year represented by this date, minus 1900.
    int date = dateInstance.getDate();
    int month = dateInstance.getMonth();
    int day = dateInstance.getDay();
    int hours = dateInstance.getHours();
    int min = dateInstance.getMinutes();
    int sec = dateInstance.getSeconds();
    
    String dayOfWeek = "";
    switch(day){
        case 0:
            dayOfWeek = "Sunday";
            break;
        case 1:
            dayOfWeek = "Monday";
            break;
        case 2:
            dayOfWeek = "Tuesday";
            break;
        case 3:
            dayOfWeek = "Wednesday";
            break;
        case 4:
            dayOfWeek = "Thursday";
            break;
        case 5:
            dayOfWeek = "Friday";
            break;
        case 6:
            dayOfWeek = "Saturday";
            break;
    }
    System.out.println("Date: " + year +"-"+ month + "-" + date + " "+ dayOfWeek);
    System.out.println("Time: " + hours +":"+ min + ":" + sec);
     

    Кроме того, у Date dateInstance = new Date(); int year = dateInstance.getYear()+1900;//Returns:the year represented by this date, minus 1900. int date = dateInstance.getDate(); int month = dateInstance.getMonth(); int day = dateInstance.getDay(); int hours = dateInstance.getHours(); int min = dateInstance.getMinutes(); int sec = dateInstance.getSeconds(); String dayOfWeek = ""; switch(day){ case 0: dayOfWeek = "Sunday"; break; case 1: dayOfWeek = "Monday"; break; case 2: dayOfWeek = "Tuesday"; break; case 3: dayOfWeek = "Wednesday"; break; case 4: dayOfWeek = "Thursday"; break; case 5: dayOfWeek = "Friday"; break; case 6: dayOfWeek = "Saturday"; break; } System.out.println("Date: " + year +"-"+ month + "-" + date + " "+ dayOfWeek); System.out.println("Time: " + hours +":"+ min + ":" + sec); классов есть подклассы. Date dateInstance = new Date(); int year = dateInstance.getYear()+1900;//Returns:the year represented by this date, minus 1900. int date = dateInstance.getDate(); int month = dateInstance.getMonth(); int day = dateInstance.getDay(); int hours = dateInstance.getHours(); int min = dateInstance.getMinutes(); int sec = dateInstance.getSeconds(); String dayOfWeek = ""; switch(day){ case 0: dayOfWeek = "Sunday"; break; case 1: dayOfWeek = "Monday"; break; case 2: dayOfWeek = "Tuesday"; break; case 3: dayOfWeek = "Wednesday"; break; case 4: dayOfWeek = "Thursday"; break; case 5: dayOfWeek = "Friday"; break; case 6: dayOfWeek = "Saturday"; break; } System.out.println("Date: " + year +"-"+ month + "-" + date + " "+ dayOfWeek); System.out.println("Time: " + hours +":"+ min + ":" + sec); является одним из них и конкретным подклассом Date dateInstance = new Date(); int year = dateInstance.getYear()+1900;//Returns:the year represented by this date, minus 1900. int date = dateInstance.getDate(); int month = dateInstance.getMonth(); int day = dateInstance.getDay(); int hours = dateInstance.getHours(); int min = dateInstance.getMinutes(); int sec = dateInstance.getSeconds(); String dayOfWeek = ""; switch(day){ case 0: dayOfWeek = "Sunday"; break; case 1: dayOfWeek = "Monday"; break; case 2: dayOfWeek = "Tuesday"; break; case 3: dayOfWeek = "Wednesday"; break; case 4: dayOfWeek = "Thursday"; break; case 5: dayOfWeek = "Friday"; break; case 6: dayOfWeek = "Saturday"; break; } System.out.println("Date: " + year +"-"+ month + "-" + date + " "+ dayOfWeek); System.out.println("Time: " + hours +":"+ min + ":" + sec); и обеспечивает стандартную систему календаря, используемую большей частью мира.

    Пример использования Date dateInstance = new Date(); int year = dateInstance.getYear()+1900;//Returns:the year represented by this date, minus 1900. int date = dateInstance.getDate(); int month = dateInstance.getMonth(); int day = dateInstance.getDay(); int hours = dateInstance.getHours(); int min = dateInstance.getMinutes(); int sec = dateInstance.getSeconds(); String dayOfWeek = ""; switch(day){ case 0: dayOfWeek = "Sunday"; break; case 1: dayOfWeek = "Monday"; break; case 2: dayOfWeek = "Tuesday"; break; case 3: dayOfWeek = "Wednesday"; break; case 4: dayOfWeek = "Thursday"; break; case 5: dayOfWeek = "Friday"; break; case 6: dayOfWeek = "Saturday"; break; } System.out.println("Date: " + year +"-"+ month + "-" + date + " "+ dayOfWeek); System.out.println("Time: " + hours +":"+ min + ":" + sec); :

     Date dateInstance = new Date();
    int year = dateInstance.getYear()+1900;//Returns:the year represented by this date, minus 1900.
    int date = dateInstance.getDate();
    int month = dateInstance.getMonth();
    int day = dateInstance.getDay();
    int hours = dateInstance.getHours();
    int min = dateInstance.getMinutes();
    int sec = dateInstance.getSeconds();
    
    String dayOfWeek = "";
    switch(day){
        case 0:
            dayOfWeek = "Sunday";
            break;
        case 1:
            dayOfWeek = "Monday";
            break;
        case 2:
            dayOfWeek = "Tuesday";
            break;
        case 3:
            dayOfWeek = "Wednesday";
            break;
        case 4:
            dayOfWeek = "Thursday";
            break;
        case 5:
            dayOfWeek = "Friday";
            break;
        case 6:
            dayOfWeek = "Saturday";
            break;
    }
    System.out.println("Date: " + year +"-"+ month + "-" + date + " "+ dayOfWeek);
    System.out.println("Time: " + hours +":"+ min + ":" + sec);
     

    Вы можете использовать Date dateInstance = new Date(); int year = dateInstance.getYear()+1900;//Returns:the year represented by this date, minus 1900. int date = dateInstance.getDate(); int month = dateInstance.getMonth(); int day = dateInstance.getDay(); int hours = dateInstance.getHours(); int min = dateInstance.getMinutes(); int sec = dateInstance.getSeconds(); String dayOfWeek = ""; switch(day){ case 0: dayOfWeek = "Sunday"; break; case 1: dayOfWeek = "Monday"; break; case 2: dayOfWeek = "Tuesday"; break; case 3: dayOfWeek = "Wednesday"; break; case 4: dayOfWeek = "Thursday"; break; case 5: dayOfWeek = "Friday"; break; case 6: dayOfWeek = "Saturday"; break; } System.out.println("Date: " + year +"-"+ month + "-" + date + " "+ dayOfWeek); System.out.println("Time: " + hours +":"+ min + ":" + sec); , простой и быстрый способ форматирования даты:

     Date dateInstance = new Date();
    int year = dateInstance.getYear()+1900;//Returns:the year represented by this date, minus 1900.
    int date = dateInstance.getDate();
    int month = dateInstance.getMonth();
    int day = dateInstance.getDay();
    int hours = dateInstance.getHours();
    int min = dateInstance.getMinutes();
    int sec = dateInstance.getSeconds();
    
    String dayOfWeek = "";
    switch(day){
        case 0:
            dayOfWeek = "Sunday";
            break;
        case 1:
            dayOfWeek = "Monday";
            break;
        case 2:
            dayOfWeek = "Tuesday";
            break;
        case 3:
            dayOfWeek = "Wednesday";
            break;
        case 4:
            dayOfWeek = "Thursday";
            break;
        case 5:
            dayOfWeek = "Friday";
            break;
        case 6:
            dayOfWeek = "Saturday";
            break;
    }
    System.out.println("Date: " + year +"-"+ month + "-" + date + " "+ dayOfWeek);
    System.out.println("Time: " + hours +":"+ min + ":" + sec);
     

    Прочтите этот учебник Jakob Jenkov: Java SimpleDateFormat .

    Как уже упоминалось, когда нам нужно делать манипуляции с датами, у нас не было простого и лучшего способа, или мы не смогли удовлетворить встроенные классы API.

    В качестве примера, когда нам нужно различать две даты , когда нам нужно сравнить две даты (есть встроенный метод и для этого) и многое другое. Нам пришлось использовать сторонние библиотеки. Одним из хороших и популярных является Joda Time.

    Также читайте:

    , Самое счастливое в настоящее время (в java 8), никому не нужно скачивать и использовать библиотеки по каким-либо причинам. Простой пример получения текущей даты и времени в Java 8,

     Date dateInstance = new Date();
    int year = dateInstance.getYear()+1900;//Returns:the year represented by this date, minus 1900.
    int date = dateInstance.getDate();
    int month = dateInstance.getMonth();
    int day = dateInstance.getDay();
    int hours = dateInstance.getHours();
    int min = dateInstance.getMinutes();
    int sec = dateInstance.getSeconds();
    
    String dayOfWeek = "";
    switch(day){
        case 0:
            dayOfWeek = "Sunday";
            break;
        case 1:
            dayOfWeek = "Monday";
            break;
        case 2:
            dayOfWeek = "Tuesday";
            break;
        case 3:
            dayOfWeek = "Wednesday";
            break;
        case 4:
            dayOfWeek = "Thursday";
            break;
        case 5:
            dayOfWeek = "Friday";
            break;
        case 6:
            dayOfWeek = "Saturday";
            break;
    }
    System.out.println("Date: " + year +"-"+ month + "-" + date + " "+ dayOfWeek);
    System.out.println("Time: " + hours +":"+ min + ":" + sec);
     

    Один из хороших сообщений в блоге, чтобы прочитать о дате Java 8 .

    И держите remeber, чтобы узнать больше о дате и времени Java, потому что есть много способов и / или полезных способов, которые вы можете получить / использовать.

    РЕДАКТИРОВАТЬ:

    Согласно комментарию @BasilBourque, неприятные старые классы времени, такие как Date: 2017-6-23 Sunday Time: 14:6:20 , Date: 2017-6-23 Sunday Time: 14:6:20 и Date: 2017-6-23 Sunday Time: 14:6:20 , теперь являются наследниками , вытесненными Date: 2017-6-23 Sunday Time: 14:6:20 классами .

    ответ дан Blasanka, с репутацией 2842, 23.07.2017
  • -1 рейтинг

    Я пойду вперед и отброшу этот ответ, потому что это все, что мне нужно, когда у меня был такой же вопрос:

     Date currentDate = new Date(System.currentTimeMillis());
     

    currentDate теперь ваша текущая дата в объекте Java Date .

    ответ дан ThePartyTurtle, с репутацией 657, 12.01.2018