我以字符串格式表示以下两个日期,并希望获得这些日期的时间。
Date elapsed = new Date(
new SimpleDateFormat().parse("10/17/2014, 2:19:22 PM").getTime()
- new SimpleDateFormat().parse("10/17/2014, 2:19:32 PM").getTime());
System.out.println("Elapsed Time: " + elapsed);
但是,我得到...ParseException: Unparseable date: "10/17/2014, 2:19:22 PM"
有人知道为什么吗?
注意:这是我在解析块生成new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(time)
答案 0 :(得分:2)
SimpleDateFormat
构造函数中指定格式。String
具有格式 dd/MM/yyyy, hh:mm:ss a
您的减法的逻辑不正确,因为它会为您提供日期之间的long
值差异,并且您正在从该值创建日期无效< /em>。为此,您必须从那个长值中获得精确的差异。您必须将 diff 与(1000 * 60)分开以获得分钟,( 1000 * 60 * 60)获得秒数和(1000 * 60 * 60 * 24)获得日期。
SimpleDateFormat sdf= new SimpleDateFormat("dd/MM/yyyy, hh:mm:ss a");
long diff = sdf.parse("10/17/2014, 2:19:22 PM").getTime()
- sdf.parse("10/17/2014, 2:18:32 PM").getTime();
System.out.println("Difference : " + (diff / (1000d * 60 )) +" Minutes");
注意: 1000d
用于执行浮点运算。
答案 1 :(得分:1)
然而,我得到...... ParseException:Unparseable date:&#34; 10/17 / 2014,2:19:22 PM&#34;有谁知道为什么?
因为您还没告诉SimpleDateFormat
字符串的格式是什么。使用accepts a pattern string之一构造函数,以便它知道会发生什么。