我在String中有两个日期格式(MMM dd,yyyy hh:mm:ss a)。 如何将两个字符串转换为日期并在几分钟内找到差异?
DateFormat df = new SimpleDateFormat("MMM dd, yyyy hh:mm:ss a", Locale.ENGLISH);
Date start = df.parse(startstring);
Date end = df.parse(endstring);
在我想要在几分钟内取得差异后,我正在使用此代码:
long result = ((end.getTime()/60000) - (start.getTime()/60000));
但结果是0.我该如何解决这个问题? 我的字符串是:
开始于:3月07日星期五23:45:43 GMT + 04:00 2014年 结束:Fri Mar 07 23:46:01 GMT + 04:00 2014
答案 0 :(得分:3)
你可以使用这种方法(首先计算自纪元以来的分钟数,然后减去它们) -
private static long getTimeInMinutesFromEpoch(Date d) {
if (d == null) {
return 0;
}
return d.getTime() / (60 * 1000);
}
public static long getMinuteDifference(Date a, Date b) {
return Math.abs(getTimeInMinutesFromEpoch(b)
- getTimeInMinutesFromEpoch(a));
}
public static void main(String[] args) throws ParseException {
String startstring = "Mar 07, 2014 23:45:43 PM";
String endstring = "Mar 07, 2014 23:46:01 PM";
DateFormat df = new SimpleDateFormat("MMM dd, yyyy hh:mm:ss a",
Locale.ENGLISH);
Date start = df.parse(endstring);
Date end = df.parse(startstring);
System.out.println(getMinuteDifference(start, end));
}
输出
1
答案 1 :(得分:2)
从它的外观来看,你是在结束日期之前创建开始日期(除非有未包含的相关信息)。
Date start = df.parse(startstring);
Date end = df.parse(endstring);
这些将在完全相同的时间内创建,因此当您尝试在几分钟内找到差异时会给出0。
修改强>
您的时间:
start: Fri Mar 07 23:45:43 GMT+04:00 2014
end: Fri Mar 07 23:46:01 GMT+04:00 2014
相隔18秒。你会在几分钟内获得0的差异。
答案 2 :(得分:1)
您可以使用Calendar
对象代替Date
,然后使用Calendar.get(Calendar.MINUTE)
获取分钟。请注意,通过使用此逻辑,22:45:43 GMT+04:00 2014
和23:45:43 GMT+04:00 2014
之间的差异将为零分钟。