시간 부분을 사용하지 않고 두 날짜를 비교하려면 어떻게 해야 합니까?
java.util의 시간 부분을 무시하는 compareTo 메서드를 원합니다.날짜. 여러 가지 방법이 있을 것 같아요.가장 간단한 방법이 뭐죠?
업데이트: 당시에는 Joda Time이 훌륭한 권장 사항이었지만, 가능하면 Java 8+에서 라이브러리를 사용하십시오.
DateTime first = ...;
DateTime second = ...;
LocalDate firstDate = first.toLocalDate();
LocalDate secondDate = second.toLocalDate();
return firstDate.compareTo(secondDate);
편집: 코멘트에도 기재되어 있듯이, 사용하면 한층 더 심플해집니다.
// TODO: consider extracting the comparator to a field.
return DateTimeComparator.getDateOnlyInstance().compare(first, second);
('시간 사용'은 '조다 시간'을 묻는 java.util.Date ★★★★★★★★★★★★★★★★★」java.util.Calendar완전히 뛰어난 API입니다.날짜/시간과 관련하여 중요한 일을 하고 있다면, 가능하면 그것을 사용하는 것이 좋습니다.)
빌트인 API를 사용해야 하는 경우 다음 인스턴스를 생성해야 합니다.Calendar적절한 날짜를 지정하고 적절한 시간대를 사용합니다.그런 다음 각 캘린더의 각 필드를 시간, 분, 초 및 밀리초로 0으로 설정하고 그 결과를 비교할 수 있습니다. 확실히
하다: 시간대는 중요하다.java.util.Date는 항상 UTC를 기반으로 합니다.제가 데이트에 관심이 있는 대부분의 경우, 그것은 특정 시간대의 데이트입니다.그것만으로도 당신은 어쩔 수 없이Calendar또는 Joda Time(본인이 시간대를 설명하지 않는 한 권장하지 않습니다)
Android 개발자를 위한 빠른 참조
//Add joda library dependency to your build.gradle file
dependencies {
...
implementation 'joda-time:joda-time:2.9.9'
}
샘플코드(예)
DateTimeComparator dateTimeComparator = DateTimeComparator.getDateOnlyInstance();
Date myDateOne = ...;
Date myDateTwo = ...;
int retVal = dateTimeComparator.compare(myDateOne, myDateTwo);
if(retVal == 0)
//both dates are equal
else if(retVal < 0)
//myDateOne is before myDateTwo
else if(retVal > 0)
//myDateOne is after myDateTwo
Apache commons-lang은 거의 어디에나 있습니다.그럼 이건 어때?
if (DateUtils.isSameDay(date1, date2)) {
// it's same
} else if (date1.before(date2)) {
// it's before
} else {
// it's after
}
java.util을 정말로 사용하고 싶은 경우.Date, 당신은 다음과 같은 일을 할 것입니다.
public class TimeIgnoringComparator implements Comparator<Date> {
public int compare(Date d1, Date d2) {
if (d1.getYear() != d2.getYear())
return d1.getYear() - d2.getYear();
if (d1.getMonth() != d2.getMonth())
return d1.getMonth() - d2.getMonth();
return d1.getDate() - d2.getDate();
}
}
또는 캘린더를 대신 사용합니다(getYear() 등은 권장되지 않으므로 권장).
public class TimeIgnoringComparator implements Comparator<Calendar> {
public int compare(Calendar c1, Calendar c2) {
if (c1.get(Calendar.YEAR) != c2.get(Calendar.YEAR))
return c1.get(Calendar.YEAR) - c2.get(Calendar.YEAR);
if (c1.get(Calendar.MONTH) != c2.get(Calendar.MONTH))
return c1.get(Calendar.MONTH) - c2.get(Calendar.MONTH);
return c1.get(Calendar.DAY_OF_MONTH) - c2.get(Calendar.DAY_OF_MONTH);
}
}
제 취향은 Joda 도서관을 사용하는 것입니다.java.util.DateJoda가 날짜와 시간을 구별하기 때문에 직접 확인할 수 있습니다(YearMonthDay 및 DateTime 클래스 참조).
,를 약약음음음음음음음음면면면면면면면면 however however however however.java.util.Date예를 들어, 유틸리티 방법을 작성할 것을 제안합니다.
public static Date setTimeToMidnight(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime( date );
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
return calendar.getTime();
}
이 대안에 대한 의견은요?
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
sdf.format(date1).equals(sdf.format(date2));
두 날짜의 월, 일, 년만 비교하려면 다음 코드가 좋습니다.
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
sdf.format(date1).equals(sdf.format(date2));
고마워요 롭.
dr;dr
myJavaUtilDate1.toInstant()
.atZone( ZoneId.of( "America/Montreal" ) )
.toLocalDate()
.isEqual (
myJavaUtilDate2.toInstant()
.atZone( ZoneId.of( "America/Montreal" ) )
.toLocalDate()
)
레거시 날짜/시간 클래스 사용 안 함
date date시시시시시시시 / such시 as such such such such such such such such such such such 등 번거로운 .Date&Calendar classestime.time으로
java.time 사용
A java.util.DateUTC로 .에 상당하는 것은 java.time입니다.Instant클래스에 된 새로운 할 수 레거시 클래스에 추가된 새로운 메서드를 사용하여 변환할 수 있습니다.
Instant instant1 = myJavaUtilDate1.toInstant();
Instant instant2 = myJavaUtilDate2.toInstant();
날짜별로 비교하려고 합니다.표준 시간대는 날짜를 결정하는 데 매우 중요합니다.날짜는 지역에 따라 전 세계적으로 다릅니다.예를 들어 프랑스 파리에서는 자정 몇 분 후가 새로운 날이고 몽트레알 퀘벡에서는 여전히 "어제"입니다.
다음 형식으로 적절한 시간대 이름을 지정합니다.continent/region, , , 등Pacific/Auckland EST ★★★★★★★★★★★★★★★★★」IST이는 진정한 표준 시간대가 아니며 표준화되지 않았으며 고유하지도 않기 때문입니다(!).
ZoneId z = ZoneId.of( "America/Montreal" );
'적용하다'를 붙입니다.ZoneIdInstant을 ZonedDateTime.
ZonedDateTime zdt1 = instant1.atZone( z );
ZonedDateTime zdt2 = instant2.atZone( z );
클래스는 시간대 및 시간대가 없는 날짜 전용 값을 나타냅니다.추출할 수 있습니다.LocalDate ZonedDateTime아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 맞다.
LocalDate localDate1 = zdt1.toLocalDate();
LocalDate localDate2 = zdt2.toLocalDate();
비교해보겠습니다. .isEqual,isBefore , , , , 입니다.isAfter.
Boolean sameDate = localDate1.isEqual( localDate2 );
이 코드는 IdeOne.com에서 라이브로 실행됩니다.
instant1: 2017-03-25T04:13:10.971Z|instant2:2017-03-24T22:13:10.972Z
zdt1: 2017-03-25T00:13:10.971-04:00[미국/몬트리올]| zdt2: 2017-03-24T18:13:10.972-04:00[미국/몬트리올]
local Date1: 2017-03-25 | local Date2: 2017-03-24
같은 날짜: false
java.time 정보
java.time 프레임워크는 Java 8 이후에 포함되어 있습니다.이러한 클래스는 , 및 등 문제가 많은 오래된 레거시 날짜 시간 클래스를 대체합니다.
현재 유지보수 모드에 있는 Joda-Time 프로젝트는 java.time 클래스로의 이행을 권장합니다.
자세한 내용은 Oracle 자습서를 참조하십시오.또한 Stack Overflow를 검색하여 많은 예와 설명을 확인하십시오.사양은 JSR 310입니다.
java.time 클래스는 어디서 얻을 수 있습니까?
- Java SE 8 및 SE 9 이후
- 붙박이.
- 번들 구현이 포함된 표준 Java API의 일부입니다.
- Java 9에는 몇 가지 사소한 기능과 수정 사항이 추가되어 있습니다.
- Java SE 6 및 SE 7
- java.time 기능의 대부분은 ThreeTen 백포트의 Java 6 및7로 백포트됩니다.
- 안드로이드
- 쓰리텐ABP 프로젝트는 특히 ThreeTen-Backport(상기)를 Android용으로 채택하고 있습니다.
- '쓰리텐ABP 사용방법'을 참조하십시오.
쓰리텐 엑스트라 프로젝트는 java.time을 추가 클래스로 확장합니다.이 프로젝트는 향후 java.time에 추가될 수 있는 가능성을 입증하는 기반입니다.여기에는 , , , 등 유용한 클래스가 있습니다.
저도 조다 타임을 선호합니다만, 다른 대안이 있습니다.
long oneDay = 24 * 60 * 60 * 1000
long d1 = first.getTime() / oneDay
long d2 = second.getTime() / oneDay
d1 == d2
편집
UTC 이외의 특정 시간대의 날짜를 비교해야 할 경우를 대비하여 아래에 UTC를 기재합니다.그래도 그런 일이 있다면 조다를 찾는 게 좋을 것 같아요.
long oneDay = 24 * 60 * 60 * 1000
long hoursFromUTC = -4 * 60 * 60 * 1000 // EST with Daylight Time Savings
long d1 = (first.getTime() + hoursFromUTC) / oneDay
long d2 = (second.getTime() + hoursFromUTC) / oneDay
d1 == d2
이미 언급한 apache commons-utils:
org.apache.commons.lang.time.DateUtils.truncate(date, Calendar.DAY_OF_MONTH)
는 시간날짜만 하는 날짜 개체를 하며, 이할 수 .Date.compareTo
유감스럽게도 '쉽다'거나 '단순하다'고 할 수 있는 두 날짜를 비교할 수 있는 방법은 없습니다.
정확도가 저하된 두 개의 시간 인스턴스를 비교할 때(예: 날짜만 비교) 항상 시간대가 비교에 미치는 영향을 고려해야 합니다.
ifdate1는 +2 및 +2 시간대에 발생한 입니다.date2EST에서 를 들어를 올바르게 합니다.예를 들어 비교의 의미를 올바르게 이해하려면 주의가 필요합니다.
두 이벤트가 동일한 날짜에 각각의 시간대에서 발생했는지 확인하는 것이 목적입니까?또는 두 날짜가 특정 시간대(예: UTC 또는 로컬 TZ)에서 동일한 달력 날짜에 속하는지 확인해야 합니다.
실제로 비교하려는 것이 무엇인지 알고 나면, 적절한 시간대에서 1년 전 날짜의 3배를 얻고 비교하기만 하면 됩니다.
Joda 시간은 실제 비교 연산을 훨씬 더 깨끗하게 보일 수 있지만 비교의 의미는 여전히 스스로 알아내야 하는 것입니다.
8을 8을 해야 .java.time.* 수업 - 한 날짜 합니다.java.util.*
예: https://docs.oracle.com/javase/8/docs/api/java/time/LocalDate.html
LocalDate date1 = LocalDate.of(2016, 2, 14);
LocalDate date2 = LocalDate.of(2015, 5, 23);
date1.isAfter(date2);
시간 없이 두 날짜만 비교하려면 다음 코드가 도움이 될 수 있습니다.
final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
Date dLastUpdateDate = dateFormat.parse(20111116);
Date dCurrentDate = dateFormat.parse(dateFormat.format(new Date()));
if (dCurrentDate.after(dLastUpdateDate))
{
add your logic
}
새로운 생각인지 다른 생각인지는 모르겠지만, 내가 했던 대로 너에게 보여줄게.
SimpleDateFormat dtf = new SimpleDateFormat("dd/MM/yyyy");
Date td_date = new Date();
String first_date = dtf.format(td_date); //First seted in String
String second_date = "30/11/2020"; //Second date you can set hear in String
String result = (first_date.equals(second_date)) ? "Yes, Its Equals":"No, It is not Equals";
System.out.println(result);
당일 확인만 하면 됩니다.OF_YEAR와 YEAR 속성
boolean isSameDay =
firstCal.get(Calendar.YEAR) == secondCal.get(Calendar.YEAR) &&
firstCal.get(Calendar.DAY_OF_YEAR) == secondCal.get(Calendar.DAY_OF_YEAR)
편집:
Kotlin 확장 기능의 힘을 사용할 수 있게 되었습니다.
fun Calendar.isSameDay(second: Calendar): Boolean {
return this[Calendar.YEAR] == second[Calendar.YEAR] && this[Calendar.DAY_OF_YEAR] == second[Calendar.DAY_OF_YEAR]
}
fun Calendar.compareDatesOnly(other: Calendar): Int {
return when {
isSameDay(other) -> 0
before(other) -> -1
else -> 1
}
}
다음은 이 블로그의 해결책입니다.http://brigitzblog.blogspot.com/2011/10/java-compare-dates.html
long milliseconds1 = calendar1.getTimeInMillis();
long milliseconds2 = calendar2.getTimeInMillis();
long diff = milliseconds2 - milliseconds1;
long diffDays = diff / (24 * 60 * 60 * 1000);
System.out.println("Time in days: " + diffDays + " days.");
즉, 밀리초 단위의 시간 차이가 하루의 길이보다 작은지 확인할 수 있습니다.
`
SimpleDateFormat sdf= new SimpleDateFormat("MM/dd/yyyy")
Date date1=sdf.parse("03/25/2015");
Date currentDate= sdf.parse(sdf.format(new Date()));
return date1.compareTo(currentDate);
`
http://mvnrepository.com/artifact/commons-lang/commons-lang 사용방법
Date date1 = new Date();
Date date2 = new Date();
if (DateUtils.truncatedCompareTo(date1, date2, Calendar.DAY_OF_MONTH) == 0)
// TRUE
else
// FALSE
Java 8에서는 Joda Time과 매우 유사한 LocalDate를 사용할 수 있습니다.
public Date saveDateWithoutTime(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime( date );
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.HOUR, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
return calendar.getTime();
}
이렇게 하면 시간을 고려하지 않고 날짜를 비교할 수 있습니다.
SimpleDateFormat의 getDateInstance를 사용하면 2개의 날짜 객체만 시간 없이 비교할 수 있습니다.아래 코드를 실행합니다.
public static void main(String[] args) {
Date date1 = new Date();
Date date2 = new Date();
DateFormat dfg = SimpleDateFormat.getDateInstance(DateFormat.DATE_FIELD);
String dateDtr1 = dfg.format(date1);
String dateDtr2 = dfg.format(date2);
System.out.println(dateDtr1+" : "+dateDtr2);
System.out.println(dateDtr1.equals(dateDtr2));
}
또 다른 간단한 비교 방법은 여기의 답변과 나의 멘토 가이던스를 기반으로 합니다.
public static int compare(Date d1, Date d2) {
Calendar c1 = Calendar.getInstance();
Calendar c2 = Calendar.getInstance();
c1.setTime(d1);
c1.set(Calendar.MILLISECOND, 0);
c1.set(Calendar.SECOND, 0);
c1.set(Calendar.MINUTE, 0);
c1.set(Calendar.HOUR_OF_DAY, 0);
c2.setTime(d2);
c2.set(Calendar.MILLISECOND, 0);
c2.set(Calendar.SECOND, 0);
c2.set(Calendar.MINUTE, 0);
c2.set(Calendar.HOUR_OF_DAY, 0);
return c1.getTime().compareTo(c2.getTime());
}
편집: @Jonathan Drapeau에 따르면, 위의 코드가 일부 케이스에 실패했다고 합니다(이 케이스들을 보고 싶습니다). 그는 제가 이해한 바와 같이 다음을 제안했습니다.
public static int compare2(Date d1, Date d2) {
Calendar c1 = Calendar.getInstance();
Calendar c2 = Calendar.getInstance();
c1.clear();
c2.clear();
c1.set(Calendar.YEAR, d1.getYear());
c1.set(Calendar.MONTH, d1.getMonth());
c1.set(Calendar.DAY_OF_MONTH, d1.getDay());
c2.set(Calendar.YEAR, d2.getYear());
c2.set(Calendar.MONTH, d2.getMonth());
c2.set(Calendar.DAY_OF_MONTH, d2.getDay());
return c1.getTime().compareTo(c2.getTime());
}
Date 클래스는 국제화에 준거하지 않기 때문에 권장되지 않습니다.대신 캘린더 클래스가 사용됩니다!
우선, 이 조작은 타임 존에 의해서 다릅니다.따라서 UTC, 컴퓨터 시간대, 좋아하는 시간대 또는 장소를 선택할 수 있습니다.아직 문제가 되지 않는 경우는, 이 회답의 하단의 예를 참조해 주세요.
하지 않기 이 특정 .Comparable오브젝트의 자연스러운 순서는 해당 필드의 날짜가 아닌 날짜로 해야 합니다.예를 들어 다음과 같습니다.
public class ArnesClass implements Comparable<ArnesClass> {
private static final ZoneId arnesTimeZone = ZoneId.systemDefault();
private Instant when;
@Override
public int compareTo(ArnesClass o) {
// question is what to put here
}
}
8 바 88java.time
할 수 .Date로로 합니다.Instant 8 Java 의 대응하는 로 돌아갈 것을 합니다.Date을. 을. 을. 을. 을. 을. 을. 을. 을. 을. 을. 을. 을. 을. 을. 을. 을. 을.을. 설정해도 됩니다.ZoneOffset.UTC ★★★★★★★★★★★★★★★★★」ZoneId.of("Europe/Stockholm")적절하다고 것 설정)ZoneOffset하는 것은, 「」이기 때문입니다.ZoneOffset는 의 입니다.ZoneId를 참조해 주세요.
Java 8 클래스를 사용하여 솔루션을 보여주기로 했습니다. :-) :-)compareTo다음 중 하나:
public int compareTo(ArnesClass o) {
LocalDate dateWithoutTime = when.atZone(arnesTimeZone).toLocalDate();
LocalDate otherDateWithoutTime = o.when.atZone(arnesTimeZone).toLocalDate();
return dateWithoutTime.compareTo(otherDateWithoutTime);
}
없는 when 당연히 더when a LocalDate모든 변환을 건너뜁니다.그러면 우리도 더 이상 시간대에 대해 걱정할 필요가 없어.
, 어떤 ,, 떤, 떤, 떤, 떤, 고, 고, 고, 고, 고, 고, 고, 고, 고, 고, 고, 고, 고, your, your, your, your, your, your, 을 선언할 수 없다고 가정해 보겠습니다.whenInstant 인 채로 .Date Java 8을 할 수 8로 Instant처럼 하세요
LocalDate dateWithoutTime = when.toInstant().atZone(arnesTimeZone).toLocalDate();
마찬가지로o.when.
Java 8은 없습니까?
Java 8을 사용할 수 없는 경우 다음 두 가지 옵션이 있습니다.
- 중 합니다.
Calendar★★★★★★★★★★★★★★★★★」SimpleDateFormat. - Java 8 날짜 및 시간 클래스의 백포트를 사용하여 Java 6 및 7로 이동한 후 위와 같이 수행합니다.하단에 링크가 포함되어 있습니다.Joda Time을 사용하지 마십시오.Joda Time을 추천하는 답변이 작성되었을 때는 아마도 좋은 제안이었을 것입니다.그러나 Joda Time은 현재 유지 보수 모드이기 때문에 ThreeTen 백포트는 더 나은 미래 대비 옵션입니다.
구식 방식
아담스키의 답변은 어떻게 시간 부분을 떼어내는지 보여줍니다.DateCalendar 꼭 사용하세요.getInstance(TimeZone) 손에 넣다Calendarinstance를 지정합니다.대안으로 Jorn의 답변 후반부의 아이디어를 사용할 수 있습니다.
「」를 사용합니다.SimpleDateFormat이라고 할 수 .CalendarSimpleDateFormat에는 를 contains contains a a가 되어 있습니다.Calendar그런데 쓰는 것보다 덜 요.Calendar★★★★
private static final TimeZone arnesTimeZone = TimeZone.getTimeZone("Europe/Stockholm");
private static final DateFormat formatter = new SimpleDateFormat("yyyyMMdd");
static {
formatter.setTimeZone(arnesTimeZone);
}
private Date when;
@Override
public int compareTo(ArnesClass o) {
return formatter.format(when).compareTo(formatter.format(o.when));
}
이것은 Rob의 대답에서 영감을 얻었다.
시간대 의존성
왜 굳이 특정 시간대를 정해야 하죠?예를 들어 UTC의 2배를 3월 24일 0:00(자정)와 12:00(낮 12시)로 비교합니다.CET(유럽/파리 등)에서 그렇게 하면 3월 24일 오전 1시와 오후 1시, 즉 같은 날짜입니다.뉴욕(동부 여름 시간)에서는 3월 23일 20:00와 3월 24일 8:00입니다.즉, 같은 날짜가 아닙니다.따라서 어느 시간대를 선택하느냐에 따라 차이가 생깁니다.컴퓨터의 디폴트만 믿고 있으면, 세계화된 이 세상에서 다른 장소에서 누군가가 당신의 코드를 컴퓨터로 실행하려고 할 때, 당신은 놀랄지도 모릅니다.
링크
Java 8 날짜 및 시간 클래스의 백포트인 ThreeTen Backport에 대한 링크: http://www.threeten.org/threetenbp/
제안:
Calendar cal = Calendar.getInstance();
cal.set(1999,10,01); // nov 1st, 1999
cal.set(Calendar.AM_PM,Calendar.AM);
cal.set(Calendar.HOUR,0);
cal.set(Calendar.MINUTE,0);
cal.set(Calendar.SECOND,0);
cal.set(Calendar.MILLISECOND,0);
// date column in the Thought table is of type sql date
Thought thought = thoughtDao.getThought(date, language);
Assert.assertEquals(cal.getTime(), thought.getDate());
Apache Commons를 사용하여 다음을 수행할 수 있습니다.
import org.apache.commons.lang3.time.DateUtils
DateUtils.truncatedEquals(first, second, Calendar.DAY_OF_MONTH)
public static Date getZeroTimeDate(Date fecha) {
Date res = fecha;
Calendar calendar = Calendar.getInstance();
calendar.setTime( fecha );
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
res = calendar.getTime();
return res;
}
Date currentDate = getZeroTimeDate(new Date());// get current date
이것이 이 문제를 해결하는 가장 간단한 방법이다.
타임스탬프별로 비교하여 해결했습니다.
Calendar last = Calendar.getInstance();
last.setTimeInMillis(firstTimeInMillis);
Calendar current = Calendar.getInstance();
if (last.get(Calendar.DAY_OF_MONTH) != current.get(Calendar.DAY_OF_MONTH)) {
//not the same day
}
안드로이드는 넓은 공간을 사용하기 때문에 Joda Time을 사용하지 않습니다.사이즈가 중요해요.;)
Java 8 및 Instant를 사용하는 다른 솔루션은 truncatedTo 메서드를 사용하고 있습니다.
지정한 단위로 잘린 이 Instant의 복사본을 반환합니다.
예:
@Test
public void dateTruncate() throws InterruptedException {
Instant now = Instant.now();
Thread.sleep(1000*5);
Instant later = Instant.now();
assertThat(now, not(equalTo(later)));
assertThat(now.truncatedTo(ChronoUnit.DAYS), equalTo(later.truncatedTo(ChronoUnit.DAYS)));
}
// Create one day 00:00:00 calendar
int oneDayTimeStamp = 1523017440;
Calendar oneDayCal = Calendar.getInstance();
oneDayCal.setTimeInMillis(oneDayTimeStamp * 1000L);
oneDayCal.set(Calendar.HOUR_OF_DAY, 0);
oneDayCal.set(Calendar.MINUTE, 0);
oneDayCal.set(Calendar.SECOND, 0);
oneDayCal.set(Calendar.MILLISECOND, 0);
// Create current day 00:00:00 calendar
Calendar currentCal = Calendar.getInstance();
currentCal.set(Calendar.HOUR_OF_DAY, 0);
currentCal.set(Calendar.MINUTE, 0);
currentCal.set(Calendar.SECOND, 0);
currentCal.set(Calendar.MILLISECOND, 0);
if (oneDayCal.compareTo(currentCal) == 0) {
// Same day (excluding time)
}
날짜)를 엄격하게 사용하는 경우java.util.Date또는 외부 라이브러리를 사용하지 않습니다.
public Boolean compareDateWithoutTime(Date d1, Date d2) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
return sdf.format(d1).equals(sdf.format(d2));
}
Date today = new Date();
Date endDate = new Date();//this
endDate.setTime(endDate.getTime() - ((endDate.getHours()*60*60*1000) + (endDate.getMinutes()*60*1000) + (endDate.getSeconds()*1000)));
today.setTime(today.getTime() - ((today.getHours()*60*60*1000) + (today.getMinutes()*60*1000) + (today.getSeconds()*1000)));
System.out.println(endDate.compareTo(today) <= 0);
시간/분/초를 0으로 설정하기만 하면 되기 때문에 현재 시각은 두 날짜 모두 동일하지 않습니다.이제 compareTo를 사용합니다.이 메서드는 true가 Yes를 의미하는 "if dueDate is today"를 찾는 데 도움이 되었습니다.
언급URL : https://stackoverflow.com/questions/1439779/how-to-compare-two-dates-without-the-time-portion
'source' 카테고리의 다른 글
| UnicodeEncodeError: 'charmap' 코덱은 문자를 인코딩할 수 없습니다. (0) | 2022.11.12 |
|---|---|
| PHP의 동적 클래스 메서드 호출 (0) | 2022.11.12 |
| 랜덤 컬러 발생기 (0) | 2022.11.12 |
| PHPExcel 자동 크기 열 폭 (0) | 2022.11.12 |
| 목록을 튜플 목록으로 병합하려면 어떻게 해야 합니까? (0) | 2022.11.12 |