자바 날짜에서 연도, 월, 일 등을 가져와 자바에서의 그레고리력 날짜와 비교하고 싶습니다.이게 가능합니까?
Java의 Date 객체가 Java의 Date 유형으로 저장되어 있습니다.
그레고리력으로 작성된 날짜도 있습니다.양력 날짜에는 매개 변수가 없으므로 오늘 날짜(및 시간?)의 인스턴스입니다.
자바 날짜를 사용하여 자바 날짜 유형에서 년, 월, 일, 시, 분, 초를 가져와 그레고리력 날짜를 비교할 수 있도록 하고 싶습니다.
현재 Java 날짜는 긴 날짜로 저장되며 사용할 수 있는 유일한 방법은 긴 날짜 문자열을 형식화된 날짜 문자열로 작성하는 것 같습니다.년, 월, 일 등에 접속할 수 있는 방법이 있습니까?
제가 봤는데getYear()
,getMonth()
의 메서드 등Date
클래스가 폐지되었습니다.Java Date 인스턴스를 사용하는 가장 좋은 방법은 무엇입니까?GregorianCalendar
날짜.
최종 목표는 날짜를 계산하여 Java 날짜가 오늘 날짜에서 몇 시간, 몇 분 이내인지 확인하는 것입니다.
저는 아직 자바에 익숙하지 않아서 조금 당황하고 있습니다.
다음과 같은 사용:
Date date; // your date
// Choose time zone in which you want to interpret your Date
Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("Europe/Paris"));
cal.setTime(date);
int year = cal.get(Calendar.YEAR);
int month = cal.get(Calendar.MONTH);
int day = cal.get(Calendar.DAY_OF_MONTH);
// etc.
주의: 달은 1이 아니라 0에서 시작합니다.
편집: Java 8이므로 java.time을 사용하는 것이 좋습니다.java.util이 아닌 LocalDate.캘린더그 방법에 대해서는, 다음의 회답을 참조해 주세요.
Java 8 이후에서는 Date 개체를 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()
1 ~ 12 의 int 값을 반환합니다.
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());
EDIT: 출력:date
=Fri Jun 15 09:20:21 CEST 2018
다음과 같습니다.
DAY FRIDAY
MONTH JUNE
YEAR 2018
이런 걸 할 수 있을 거예요. 그게 어떻게 하면Date
수업은 성공합니다.
String currentDateString = "02/27/2012 17:00:00";
SimpleDateFormat sd = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");
Date currentDate = sd.parse(currentDateString);
String yourDateString = "02/28/2012 15:00:00";
SimpleDateFormat yourDateFormat = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");
Date yourDate = yourDateFormat.parse(yourDateString);
if (yourDate.after(currentDate)) {
System.out.println("After");
} else if(yourDate.equals(currentDate)) {
System.out.println("Same");
} else {
System.out.println("Before");
}
private boolean isSameDay(Date date1, Date date2) {
Calendar calendar1 = Calendar.getInstance();
calendar1.setTime(date1);
Calendar calendar2 = Calendar.getInstance();
calendar2.setTime(date2);
boolean sameYear = calendar1.get(Calendar.YEAR) == calendar2.get(Calendar.YEAR);
boolean sameMonth = calendar1.get(Calendar.MONTH) == calendar2.get(Calendar.MONTH);
boolean sameDay = calendar1.get(Calendar.DAY_OF_MONTH) == calendar2.get(Calendar.DAY_OF_MONTH);
return (sameDay && sameMonth && sameYear);
}
그게 더 쉬울지도 몰라
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);
Date queueDate = new SimpleDateFormat("yyyy-MM-dd").parse(inputDtStr);
Calendar queueDateCal = Calendar.getInstance();
queueDateCal.setTime(queueDate);
if(queueDateCal.get(Calendar.DAY_OF_YEAR)==Calendar.getInstance().get(Calendar.DAY_OF_YEAR))
{
"same day of the year!";
}
@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(캘린더 솔루션)는 10배 고속입니다.이것으로 yyyy MM dd 00 00 00 이 되어 date.compare 를 사용하여 비교합니다.
언급URL : https://stackoverflow.com/questions/9474121/i-want-to-get-year-month-day-etc-from-java-date-to-compare-with-gregorian-cal
'programing' 카테고리의 다른 글
Java에서 정수의 로그 베이스 2는 어떻게 계산합니까? (0) | 2022.08.28 |
---|---|
템플릿에서 v-for에 있는 저장소를 직접 참조하는 Vue.js의 잘못된 관행? (0) | 2022.08.28 |
C - %x 형식 지정자 (0) | 2022.08.15 |
v-if에서 원활한 vue 축소 전환 (0) | 2022.08.15 |
Set과 List의 차이점은 무엇입니까? (0) | 2022.08.15 |