簡體   English   中英

如何使用公歷比較沒有時間戳的日期?

[英]How to compare dates without time stamp using Gregorian Calendar?

如何使用公歷比較沒有時間戳的日期? 在下面提供的示例中,兩個結果都必須為true

package com.tutorialspoint;

import java.util.*;

public class GregorianCalendarDemo {

   public static void main(String[] args) {

   // create a new calendar
   GregorianCalendar cal1 = 
   (GregorianCalendar) GregorianCalendar.getInstance();

   // print the current date and time
   System.out.println("" + cal1.getTime());

   // create a second calendar equal to first one
   GregorianCalendar cal2 = (GregorianCalendar) (Calendar) cal1.clone();

   // print cal2
   System.out.println("" + cal2.getTime());

   // compare the two calendars
   System.out.println("Cal1 and Cal2 are equal:" + cal1.equals(cal2));

   // change cal 2 a bit
   cal2.add(GregorianCalendar.MINUTE, 5);

   // compare the two calendars
   System.out.println("Cal1 and Cal2 are equal:" + cal1.equals(cal2));

   }
}

假設cal1cal2具有相同的時區(即cal1.getTimeZone().equals(cal2.getTimeZone()) ),則可以使用以下代碼僅比較日期:

cal1.get(Calendar.YEAR) == cal2.get(Calendar.YEAR) &&
cal1.get(Calendar.DAY_OF_YEAR) == cal2.get(Calendar.DAY_OF_YEAR)

由於您正在使用equals比較兩個實例,因此只有在它們表示完全相同的時間戳時,它們才能相等。 請參閱java.util.GregorianCalendar#equals Javadoc:

將此GregorianCalendar與指定的Object進行比較。 當且僅當參數是一個GregorianCalendar對象,並且該對象在相同的Calendar參數和Gregorian更改日期下代表相同的時間值(距紀元的毫秒偏移),結果才為true。

因此,在將cal2的值更改為其他值之后,它永遠不能等於cal1

如果要比較日期,請使用以下代碼:

// compare the two dates
System.out.println("Date1 and date2 are equal:" + cal1.getTime().equals(cal2.getTime()));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM