Как получить текущую дату / время в Java - PullRequest
640 голосов
/ 03 марта 2011

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

Ответы [ 26 ]

9 голосов
/ 02 декабря 2013

Аналогично вышеуказанным решениям.Но я всегда ищу этот кусок кода:

Date date=Calendar.getInstance().getTime();
System.out.println(date);
9 голосов
/ 03 марта 2011

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

8 голосов
/ 03 марта 2011
java.util.Date date = new java.util.Date();

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

7 голосов
/ 20 сентября 2017

Для 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/

7 голосов
/ 22 сентября 2015

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 по Гринвичу для сравнения времени.

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);
    }
}

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

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

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

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/

6 голосов
/ 31 октября 2014

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

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
4 голосов
/ 23 апреля 2016

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

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

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

3 голосов
/ 17 мая 2018

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

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

Не безопасно для потоков: 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
3 голосов
/ 03 марта 2011

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

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

3 голосов
/ 03 марта 2011

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

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

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

...