我正在从我的记事本(数据库)中检索这个
的值 strLine = br.readLine().trim();
if ((strLine.length()!=0) && (strLine.charAt(0)!='#')) {
String[] teachers = strLine.split("\\s+");
Interviews interview = new Interviews();
interview.setTime(teachers[4]+" "+ teachers[5]);
此时我的时间价值是(给定为调试器)
"2011-9-5 0:00"
我希望将此时间与其他时间进行比较
但是当我尝试以日期格式解析这些值时
SimpleDateFormat df=new SimpleDateFormat("yyyy-mm-dd hh:mm:ss");
Date d1=df.parse(interviewList.get(0).getTime());
它给了我错误
java.text.ParseException: Unparseable date: "2011-9-5 0:00"
这是我记事本(数据库)2011-9-5 0:00
中的格式如何将此值作为时间与其他时间进行比较
由于
答案 0 :(得分:2)
这是您正在寻找的格式。它将解析单/双位数月/日yyyy-MM-dd hh:mm
。请注意,mm
表示分钟,因此您应该使用MM
几个月。
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm");
System.out.println(df.parse("2011-9-5 9:00"));
打印
Mon Sep 05 09:00:00 EDT 2011
使用jdk 1.6验证了这一点。现在,我没有看到你在任何地方比较日期。您可以使用Calendar
的{{3}}和after()方法,也可以在日期调用before()并使用<
或>
(更快)。这一切都取决于你所比较的东西。
答案 1 :(得分:1)
以下是如何执行此操作的示例:
/**
* Date difference, as minutes (abs)
*/
public class DateDiff {
static SimpleDateFormat df=new SimpleDateFormat("yyyy-mm-dd hh:mm:ss");
private String sD1;
private String sD2;
public DateDiff(String sD1, String sD2) {
this.sD1=sD1;
this.sD2=sD2;
}
/**
* Parse date strings in format like: 2005-01-01 22:10:35
*/
public long getDifferenceInMinutes () throws ParseException {
Date d1=df.parse(sD1);
Date d2=df.parse(sD2);
long d1Ms=d1.getTime();
long d2Ms=d2.getTime();
return Math.abs((d1Ms-d2Ms)/60000);
}
/**
***************** MAIN *******************
* @param args
*/
public static void main(String[] args) {
DateDiff dd = new DateDiff("2005-01-01 22:10:35",
"2005-01-01 23:11:35");
try {
long diff=dd.getDifferenceInMinutes();
System.out.println("Time difference (abs): " + diff);
}
catch (ParseException ex) {
ex.printStackTrace();
}
}
}
答案 2 :(得分:0)
您的约会日期应为yyyy-MM-dd hh:mm:ss
格式。
一旦您的日期格式如上,您就可以获得日期对象
SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
Date d1=df.parse(dateToPars);
d1.after(otherDateYouWantTocompare); OR
d1.before(otherDateyouWantToCompare);
Pangea验证后编辑。