如何检查一个date是否比Java更大?
我正在开发一个Java应用程序,它在命令行中生成一个由用户input的持续时间的报告。 用户需要按以下格式inputdate:dd-MM-yyyy
> java report startDate endDate
例:
java报告01-01-2013 31-03-2013
在代码中,我将date保存在两个string中。 我必须确保用户input的开始date应该早于结束date。 有一个内置的函数,可以通过传递这两个string来帮助我实现这个function吗?
您可以使用Date.before()或Date.after()或Date.equals()进行date比较。
采取从这里 :
import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class DateDiff { public static void main( String[] args ) { compareDates("2017-01-13 00:00:00", "2017-01-14 00:00:00");// output will be Date1 is before Date2 compareDates("2017-01-13 00:00:00", "2017-01-12 00:00:00");//output will be Date1 is after Date2 compareDates("2017-01-13 00:00:00", "2017-01-13 10:20:30");//output will be Date1 is before Date2 because date2 is ahead of date 1 by 10:20:30 hours compareDates("2017-01-13 00:00:00", "2017-01-13 00:00:00");//output will be Date1 is equal Date2 because both date and time are equal } public static void compareDates(String d1,String d2) { try{ // If you already have date objects then skip 1 //1 // Create 2 dates starts SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date date1 = sdf.parse(d1); Date date2 = sdf.parse(d2); System.out.println("Date1"+sdf.format(date1)); System.out.println("Date2"+sdf.format(date2));System.out.println(); // Create 2 dates ends //1 // Date object is having 3 methods namely after,before and equals for comparing // after() will return true if and only if date1 is after date 2 if(date1.after(date2)){ System.out.println("Date1 is after Date2"); } // before() will return true if and only if date1 is before date2 if(date1.before(date2)){ System.out.println("Date1 is before Date2"); } //equals() returns true if both the dates are equal if(date1.equals(date2)){ System.out.println("Date1 is equal Date2"); } System.out.println(); } catch(ParseException ex){ ex.printStackTrace(); } } public static void compareDates(Date date1,Date date2) { // if you already have date objects then skip 1 //1 //1 //date object is having 3 methods namely after,before and equals for comparing //after() will return true if and only if date1 is after date 2 if(date1.after(date2)){ System.out.println("Date1 is after Date2"); } //before() will return true if and only if date1 is before date2 if(date1.before(date2)){ System.out.println("Date1 is before Date2"); } //equals() returns true if both the dates are equal if(date1.equals(date2)){ System.out.println("Date1 is equal Date2"); } System.out.println(); } }
先分析两个datefirstDate
和secondDate
使用SimpleDateFormat
。
firstDate.after(secondDate);
firstDate.before(secondDate);
将stringparsing为date,然后before
compareTo
before
或之后使用compareTo
进行比较
Date d = new Date(); d.compareTo(anotherDate)
即
Date date1 = new SimpleDateFormat("MM/dd/yyyy").parse(date1string) Date date2 = new SimpleDateFormat("MM/dd/yyyy").parse(date2string) date1.compareTo(date2);
javadoc for compareTo http://docs.oracle.com/javase/6/docs/api/java/util/Date.html#compareTo(java.util.Date);
您需要使用SimpleDateFormat
( dd-MM-yyyy
将是格式)来将2个inputstringparsing为Date
对象,然后使用Date#before(otherDate)
(或) Date#after(otherDate)
Date#before(otherDate)
Date#after(otherDate)
进行比较。
尝试自己实现代码。