Подтвердить что ты не робот

Как получить сегодня дату?

Другими словами, мне нужна функциональность, предоставляющая Joda-Time:

today = today.withTime(0, 0, 0, 0);

но без Joda-Time, только с java.util.Date.

Методы, такие как .setHours() и т.д., устарели. Есть ли более правильный способ?

4b9b3361

Ответ 1

Date today = new Date();
today.setHours(0); //same for minutes and seconds

Поскольку методы устарели, вы можете сделать это с помощью Calendar:

Calendar today = Calendar.getInstance();
today.set(Calendar.HOUR_OF_DAY, 0); // same for minutes and seconds

И если вам нужен объект Date в конце, просто вызовите today.getTime()

Ответ 2

Date today = DateUtils.truncate(new Date(), Calendar.DAY_OF_MONTH);

DateUtils от Apache Commons-Lang. Следите за часовым поясом!

Ответ 3

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

найдено здесь

Ответ 4

Есть ли более правильный способ?

Да, есть.

LocalDate.now( 
    ZoneId.of( "America/Montreal" ) 
).atStartOfDay(
    ZoneId.of( "America/Montreal" )
)

java.time

Java 8 и более поздние версии теперь имеют новую встроенную среду java.time. См. Tutorial. Вдохновленный Joda-Time, определенный JSR 310 и расширенный проектом ThreeTen-Extra.

Примеры

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

Вот пример даты-только, без времени суток или часового пояса.

ZoneId zonedId = ZoneId.of( "America/Montreal" );
LocalDate today = LocalDate.now( zonedId );
System.out.println( "today : " + today );

сегодня: 2015-10-19

Ниже приведен пример получения текущего времени.

ZoneId zonedId = ZoneId.of( "America/Montreal" );
ZonedDateTime zdt = ZonedDateTime.now( zonedId );
System.out.println( "zdt : " + zdt );

При запуске:

zdt: 2015-10-19T18: 07: 02.910-04: 00 [Америка/Монреаль]

Первый момент дня

Вопрос задает дату, когда время установлено на ноль. Это предполагает, что первым моментом дня всегда является время 00:00:00.0, но это не всегда так. Летнее время (DST) и, возможно, другие аномалии означают, что день может начинаться в другое время, например 01:00.0.

К счастью, java.time имеет средство, чтобы определить первый момент в день, соответствующий конкретной временной зоне, LocalDate::atStartOfDay. Посмотрите код, используя LocalDate с именем today и ZoneId с именем ZoneId из приведенного выше кода.

ZonedDateTime todayStart = today.atStartOfDay( zoneId );

zdt: 2015-10-19T00: 00: 00-04: 00 [Америка/Монреаль]

Interoperability

Если у вас должен быть java.util.Date для использования с классами, еще не обновленными для работы с типами java.time, конвертируйте. Вызовите метод java.util.Date.from( Instant instant ).

java.util.Date date = java.util.Date.from( zdt.toInstant() );

Ответ 5

Если вы хотите полночь (0:00 утра) для текущей даты, вы можете просто использовать конструктор по умолчанию и обнулить части времени:

Date today = new Date();
today.setHours(0); today.setMinutes(0); today.setSeconds(0);

изменить: обновить с помощью Calendar, поскольку эти методы устарели

Calendar today = Calendar.getInstance();
today.clear(Calendar.HOUR); today.clear(Calendar.MINUTE); today.clear(Calendar.SECOND);
Date todayDate = today.getTime();

Ответ 6

Используйте этот код;

String mydate = java.text.DateFormat.getDateTimeInstance().format(Calendar.getInstance().getTime());

Это будет отображаться как:

5 февраля 2013 г. 12:39:02

Ответ 7

import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.Month;
import java.util.Calendar;
import java.util.Date;


/**
 * * Java Program to get current day, month, year, and dayOfweek in both Java 8
 * * and before e.g. JDK 1.6 and JDK 1.7
 */

/**
 * @author AJMAL SHA
 *
 */
public class Test {
    public static void main(String[] args) { // Before Java 8
        Date today = new Date();
        Calendar cal = Calendar.getInstance();
        cal.setTime(today); // don't forget this if date is arbitrary
        int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK); // 1 being Sunday
        int dayOfMonth = cal.get(Calendar.DAY_OF_MONTH);
        int dayOfYear = cal.get(Calendar.DAY_OF_YEAR);
        int month = cal.get(Calendar.MONTH); // 0 being January
        int year = cal.get(Calendar.YEAR);
        System.out.println("current date : " + today);
        System.out.println("dayOfWeek from date in Java 6 : " + dayOfWeek);
        System.out.println("dayOfMonth from a date in Java 7 : " + dayOfMonth);
        System.out.println("dayOfYear from a date in Java 1.6 : " + dayOfYear);
        System.out.println("month from a date in Java 1.7 : " + month);
        System.out.println("year from date in JDK 6 : " + year); // In Java 8
        LocalDate currentDate = LocalDate.now();
        DayOfWeek dow = currentDate.getDayOfWeek();
        int dom = currentDate.getDayOfMonth();
        int doy = currentDate.getDayOfYear();
        Month m = currentDate.getMonth();
        int y = currentDate.getYear();
        System.out.println("current local date : " + currentDate);
        System.out.println("dayOfWeek from a date in Java 8 : " + dow);
        System.out.println("dayOfMonth from date in JDK 8: " + dom);
        System.out.println("dayOfYear from a date in Java SE 8 : " + doy);
        System.out.println("month from a date in Java 1.8 : " + m);
        System.out.println("year from date in JDK 1.8 : " + y);
    }
}

Output..

current date : Sun Feb 19 06:38:16 PST 2017
dayOfWeek from date in Java 6 : 1
dayOfMonth from a date in Java 7 : 19
dayOfYear from a date in Java 1.6 : 50
month from a date in Java 1.7 : 1
year from date in JDK 6 : 2017
current local date : 2017-02-19
dayOfWeek from a date in Java 8 : SUNDAY
dayOfMonth from date in JDK 8: 19
dayOfYear from a date in Java SE 8 : 50
month from a date in Java 1.8 : FEBRUARY
year from date in JDK 1.8 : 2017