Я хочу получить Year, Month, Day и т. Д. Из Java Date для сравнения с григорианской датой календаря на Java. Это возможно?



Answers

С помощью Java 8 и более поздних java.time.LocalDate вы можете преобразовать объект Date объект java.time.LocalDate а затем легко получить год, месяц и день.

Date date = new Date();
LocalDate localDate = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
int year  = localDate.getYear();
int month = localDate.getMonthValue();
int day   = localDate.getDayOfMonth();

Обратите внимание, что getMonthValue() возвращает значение int от 1 до 12.

Question

У меня есть объект Date в Java, который хранится как тип даты Java.

У меня также есть дата создания григорианского календаря. Графическая календарная дата не имеет параметров и поэтому является примером сегодняшней даты (и времени?).

С датой java я хочу получить год, месяц, день, час, минуту и ​​секунды из типа даты java и сравнить дату gregoriancalendar.

Я видел, что на данный момент дата Java хранится как длинная, и единственные доступные методы, похоже, просто записывают long как форматированную строку даты. Есть ли способ доступа к Год, месяц, день и т. Д.?

Я видел, что getYear() , getMonth() и т. Д. Для класса Date устарели. Мне было интересно, что лучше всего использовать экземпляр Java Date, который у меня есть с датой GregorianCalendar .

Моя конечная цель - сделать расчет даты, чтобы я мог проверить, что дата Java находится в пределах стольких часов, минут и т. Д. Сегодняшней даты и времени.

Я все еще новичок в Java, и я немного озадачен этим.




Это может быть проще

     Date date1 = new Date("31-May-2017");
OR
    java.sql.Date date1 = new java.sql.Date((new Date()).getTime());

    SimpleDateFormat formatNowDay = new SimpleDateFormat("dd");
    SimpleDateFormat formatNowMonth = new SimpleDateFormat("MM");
    SimpleDateFormat formatNowYear = new SimpleDateFormat("YYYY");

    String currentDay = formatNowDay.format(date1);
    String currentMonth = formatNowMonth.format(date1);
    String currentYear = formatNowYear.format(date1);



@Test
public void testDate() throws ParseException {
    long start = System.currentTimeMillis();
    long round = 100000l;
    for (int i = 0; i < round; i++) {
        StringUtil.getYearMonthDay(new Date());
    }
    long mid = System.currentTimeMillis();
    for (int i = 0; i < round; i++) {
        StringUtil.getYearMonthDay2(new Date());
    }
    long end = System.currentTimeMillis();
    System.out.println(mid - start);
    System.out.println(end - mid);
}

public static Date getYearMonthDay(Date date) throws ParseException {
    SimpleDateFormat f = new SimpleDateFormat("yyyyyMMdd");
    String dateStr = f.format(date);
    return f.parse(dateStr);
}

public static Date getYearMonthDay2(Date date) throws ParseException {
    Calendar c = Calendar.getInstance();
    c.setTime(date);
    c.set(Calendar.SECOND, 0);
    c.set(Calendar.MINUTE, 0);
    c.set(Calendar.HOUR_OF_DAY, 0);
    return c.getTime();
}
public static int compare(Date today, Date future, Date past) {
    Date today1 = StringUtil.getYearMonthDay2(today);
    Date future1 = StringUtil.getYearMonthDay2(future);
    Date past1 = StringUtil.getYearMonthDay2(past);
    return today.compare // or today.after or today.before
}

getYearMonthDay2 (решение для календаря) в десять раз быстрее. Теперь у вас есть yyyy MM dd 00 00 00, а затем сравните с помощью date.compare




    Date date = new Date();

    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("EEEE");

    System.out.println("DAY "+simpleDateFormat.format(date).toUpperCase());

    simpleDateFormat = new SimpleDateFormat("MMMM");
    System.out.println("MONTH "+simpleDateFormat.format(date).toUpperCase());

    simpleDateFormat = new SimpleDateFormat("YYYY");
    System.out.println("YEAR "+simpleDateFormat.format(date).toUpperCase());





Related