比较不同格式的两个日期对象

时间:2016-11-04 04:06:37

标签: java date selenium time comparison

我有两个约会。

第一个日期是系统时间。第二个日期与新闻文章有关,当文章过期时,它被称为end_time。

我使用selenium来测试当系统时间超过end_time时文章确实会过期。

我的代码如下:

String searchstring = poriginal;
//make objects to be compared
Date parsed_system_time=null;
Date parsed_end_time=null;

//generate a current time object    
GenerateSimpleTime current_time = new GenerateSimpleTime();
current_time.setSystem_time_snapshot();
String system_time = current_time.getSystem_time_snapshot();


//set up the SimpleDateFormat to be used for parsing the strings into objects for comparison
//parsing the date format e.g : 04:11:2016 11:34 AM
SimpleDateFormat sdf = new SimpleDateFormat("dd:MM:yyyy hh:mm");
try{
    System.out.println("Trying to parse system time: \n");
    parsed_system_time = sdf.parse(system_time);
}
catch(ParseException e)
{
    System.out.println("Couldnt parse system time...\n");
    e.printStackTrace();
}

SimpleDateFormat end_time_sdf = new SimpleDateFormat("dd MMMM, yyyy hh:mm a");
try {
    parsed_end_time = end_time_sdf.parse(end_date);
} catch (ParseException e) {
    System.out.println("Couldnt parse end_date...\n");
    e.printStackTrace();
}

while(parsed_system_time.before(parsed_end_time))
{
current_time.setSystem_time_snapshot();
try {
    system_time = current_time.getSystem_time_snapshot();
    parsed_system_time = sdf.parse(system_time);
    System.out.println("endtime is: "+ parsed_end_time+"\n");
} catch (ParseException e) {
    System.out.println("Couldnt parse current_time.getSystem_time_snapshot()...\n");
    e.printStackTrace();
}
//System.out.println("system time is: \n");
}

当我运行程序时,日期采用以下格式

endtime:Fri Nov 04 13:49:00 AEST 2016

systemtime:04:11:2016 1:52 PM

如果在比较两个日期时是否有问题,如果它们的格式不同。它不重要吗?

当我运行测试时,我的程序会无限期地运行,并且在系统时间大于结束时间时不会检测到。

setSystem_time_snapshot()执行以下操作:

 String pattern= "dd:MM:YYY h:mm a";
     SimpleDateFormat simpletime = new SimpleDateFormat(pattern);
     system_time_snapshot = simpletime.format(new Date());

     System.out.println("system time snapshop is "+system_time_snapshot+"\n");

我清理这个烂摊子并让它正常工作的任何想法?

2 个答案:

答案 0 :(得分:1)

所以你的setSystem_time_snapshot()正在以

的格式返回一个字符串
dd:MM:YYY h:mm a

但你的sdf是

SimpleDateFormat sdf = new SimpleDateFormat("dd:MM:yyyy hh:mm");

答案 1 :(得分:0)

如果你的最后时间是:Fri Nov 04 13:49:00 AEST 2016, 你应该使用" EEE MMM dd HH:mm:ss zzzz yyyy"在你的SimpleDateFormat

SimpleDateFormat end_time_sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzzz yyyy");