手动比较日期Java

时间:2014-05-11 14:07:42

标签: java

我想在不使用SimpleDateFormat或Date库的情况下比较字符串或参数,参数和参数,字符串和字符串中的两个日期,以及测试。我的构造函数和getter都经过了设置和测试。

这就是我对伪代码的看法。

public static void compare(int d, int m, int y)

If year in c1 is greater than c2, print c2 is earlier than c1
Else if month in c1 is greater than c2, print c2 is earlier than c1
Else if day in c1 is greater than c2, print c2 is earlier than c1

我不确定在日期的每个部分已经拆分时我将如何比较两个例子。我有一个字符串方法,它将输入作为字符串并解析它。另外该方法应该在另一个程序中调用,在这个有两个变量使用的实例中如何调用它?

3 个答案:

答案 0 :(得分:0)

您可以尝试将日期转换为“自01-01-0000以来的天数”(或转换为unix timestamp)。 第一个适用于所有日期,第二个适用于1970年1月1日至19th January 2038(32位系统)。

由于这些值是可比较的数字,只需使用if块并进行比较。

答案 1 :(得分:0)

以下是一个例子:

public int dateCompare(Date date1, Date date2) {

    if (date1.getYear() != date2.getYear())
        return (date1.getYear() - date2.getYear());
    if (date1.getMonth() != date2.getMonth())
        return (date1.getMonth() - date2.getMonth());
    return (date1.getDay() - date2.getDay());

}

输出:

  • < 0 if date1< DATE2
  • 如果date1 = date2 ,则
  • = 0
  • > 0如果date1> DATE2

答案 2 :(得分:0)

如果您已将日期拆分为日期年度

扩展您的方法,这只是手动和人工密集检查的一个例子

public static void compare(int firstDateDay, int firstDateMonth, int firstDateYear, int secondDateDay, int secondDateMonth, int secondDateYear)
{
   if (firstDateYear > secondDateYear)
   {
    // print secondDate is before first date 
   }
   else if (firstDateYear < secondDateYear )
   {
     // print secondDate is after first date 
   }
   else
  {
    // now check months 
  } 
 }