У меня есть объект Date в Java, хранящийся как тип даты Java.
У меня также есть дата создания григорианского календаря. Дата григорианского календаря не имеет параметров и, следовательно, является экземпляром сегодняшней даты (и времени?).
С помощью даты Java, я хочу иметь возможность получить год, месяц, день, час, минуту и секунды из типа даты Java и сравнить дату gregoriancalendar.
Я видел, что в настоящий момент дата Java хранится как long, и единственные доступные методы, кажется, просто записывают long как отформатированную строку даты. Есть ли способ получить год, месяц, день и т. Д.?
Я видел , что getYear()
, getMonth()
и т.д. методы Date
класса устарели. Мне было интересно, как лучше использовать экземпляр даты Java, который у меня есть, с GregorianCalendar
датой.
Моя конечная цель - сделать расчет даты, чтобы я мог проверить, что дата Java находится в пределах стольких часов, минут и т. Д. От сегодняшней даты и времени.
Я все еще новичок в Java, и меня это немного озадачивает.
источник
Date.getYear()
Он страдает от проблем (что я не знаю).Date.getYear()
однажды проанализировал мою дату 30/06/2017, и мой год вернулся как 117. Посмотрите, где он приземлился, две тысячи лет назад. Но когда я печатаю просто объект Date, вывод был в порядкеDate.getYear();
. Но нет .Ответы:
Используйте что-то вроде:
Осторожно, месяцы начинаются с 0, а не с 1.
Редактировать : Начиная с Java 8 лучше использовать java.time.LocalDate, а не java.util.Calendar . Посмотрите этот ответ, чтобы узнать, как это сделать.
источник
cal.add(Calendar.DAY_OF_MONTH, -48)
дневную арифметику для объектов календаря. И вы можете сравнить два объекта календаря, используяcal.compareTo(anotherCal)
.В Java 8 и более поздних версиях вы можете преобразовать объект Date в объект LocalDate, а затем легко получить год, месяц и день.
Обратите внимание, что
getMonthValue()
возвращает значение int от 1 до 12.источник
LocalDate
Java 8 - это лучшее решение, которое экономит ваше время, другое решение используетCalendar
иDate
полон хлопот.Вы можете сделать что-то вроде этого, это объяснит, как
Date
работает класс.источник
mm
обозначает минуты, верхний регистрMM
обозначает месяц года.РЕДАКТИРОВАТЬ: выход для
date
=Fri Jun 15 09:20:21 CEST 2018
:источник
источник
источник
java.util.Date
,java.util.Calendar
иjava.text.SimpleDateFormat
теперь унаследованные , вытеснены классами java.time, встроенными в Java 8 и более поздние версии . Смотрите Учебник по Oracle .getYearMonthDay2 (календарное решение) работает в десять раз быстрее. Теперь у вас есть гггг ММ дд 00 00 00, а затем сравните с помощью date.compare
источник
Может быть проще
источник
Будьте осторожны, начните с 0, а не с 1. Также используйте календарь в формате pm как am, поэтому будьте внимательны при использовании часов и минут.
источник