【发布时间】:2012-01-03 05:11:37
【问题描述】:
我需要获取两个日期之间的分钟数。我知道 Joda 是最好用的,但这是针对 Android 项目的,所以我更喜欢尽可能使用一些外部库,而且我正在构建的应用程序不需要精确的计算。
但是,我使用的代码似乎不起作用。我正在尝试获取“11/21/2011 7:00:00 AM”和“11/21/2011 1:00:00 PM”之间的分钟数(应该是 360 分钟),但代码 I '正在使用返回 0:
int diff = minutesDiff(GetItemDate("11/21/2011 7:00:00 AM"), GetItemDate("11/21/2011 1:00:00 PM"));
public static Date GetItemDate(final String date)
{
final Calendar cal = Calendar.getInstance(TimeZone.getDefault());
final SimpleDateFormat format = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss a");
format.setCalendar(cal);
try {
return format.parse(date);
} catch (ParseException e) {
return null;
}
}
public static int minutesDiff(Date earlierDate, Date laterDate)
{
if( earlierDate == null || laterDate == null ) return 0;
return (int)((laterDate.getTime()/60000) - (earlierDate.getTime()/60000));
}
【问题讨论】:
-
有吗?它不适合我。还有,你为什么要分两次?
-
它对我来说非常好用。输出为 -360。
-
我不知道你为什么得到零,但你的格式字符串是错误的。 HH 是 0 到 23 之间小时的格式,但由于您也有格式字符,我假设您希望小时在 1 到 12 之间,并且您应该使用 hh。目前,您的 1:00:00 PM 被解析为 1:00:00 AM。
-
如果一个日期是
null,作为返回值,-1会不会更有意义?还是抛出IllegalArgumentException?如果你返回0,这两个日期似乎代表了同一个时间点,但其中一个甚至可能不是有效的对象引用。 -
感谢亚诺,这就是问题所在。我在格式化日期时遇到了异常。此外,删除了两个部门。 :)