当前位置: 首页 > 面试题库 >

两个日期之间以分钟为单位的差异

须景胜
2023-03-14
问题内容

我需要获取两个日期之间的分钟数。我知道Joda是最适合使用的,但这是针对Android项目的,因此,我更喜欢使用一些外部库,并且我正在构建的应用程序不需要计算得很精确。

但是,我正在使用的代码似乎无法正常工作。我正在尝试获取“ 11/21/2011 7:00:00 AM”和“ 11/21/2011 1:00:00
PM”之间的分钟数(应该为360分钟),但是代码我’m using返回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));
}

问题答案:

我从你的代码调试:有ParseExceptionGetItemDate()两个日期字符串类似的:

无法解析的日期:2011年1月1日上午7:00:00

问题在于解析AM / PM小时仅适用于“ hh”(小写!)或“ KK”。至少我的手机就是这种情况(似乎有些人根本没有看到此问题)。我测试过它也可以使用单个“
h”。

hh = 1-12
KK = 0-11
HH = 0-23
kk = 1-24

SimpleDateFormat行更改为此:

final SimpleDateFormat format = new SimpleDateFormat("MM/dd/yyyy hh:mm:ss a", Locale.US);

这篇文章解释了“ a”和Locale:无法使用AM / PM标记解析DateTime-string

PS。我来自芬兰,因此必须使用“ Locale.US”部分才能正常工作。我认为,美国居民可能会在没有该代码的情况下对其进行测试。



 类似资料:
  • 我试图以天计算两个日期之间的差异。然而,当两个日期在不同的月份时,前一个月的日子被丢弃。 例如,如果开始日期是3月31日,结束日期是4月1日,则差异为0。 如果两天在同一个月,它工作正常。 提前感谢您的支持。 更新:我想到了如何修复它。除了选择的日期是一个月的最后一天,一切都按预期进行。可以在下面找到一个实时演示: 这里的演示 例如,开始日期:3月19日,结束日期:3月21日。差2天。 但当选择的

  • 问题内容: 如果我有两个这样的日期时间: 如何以以下格式获取这些日期时间之间的差异: 我用 但是我只有时间。 问题答案: 试试这个- 询问: 输出:

  • 问题内容: 如何为Python中以下时间戳计算以分钟为单位的时间差? 问题答案:

  • 问题内容: 我试图在几秒钟之内得到两个日期之间的差异。逻辑将是这样的: 设置一个初始日期,即现在; 设置最终日期,该日期将是初始日期加上将来的秒数(例如,假设15) 得到这两者之间的差(秒数) 之所以使用日期来做,是因为最终日期/时间取决于其他一些变量,并且永远不一样(取决于用户执行操作的速度),并且我还存储其他日期的初始日期。 我一直在尝试这样的事情: 问题是我永远都不会得到正确的区别。我尝试过

  • 问题内容: 必须有一种更简单的方法来执行此操作。我有想要经常刷新的对象,因此我想记录它们的创建时间,对照当前时间戳进行检查,并根据需要刷新。 事实证明datetime.datetime很困难,我也不想深入ctime库。这样的事情有什么容易的吗? 问题答案: 如果要计算两个已知日期之间的差异,请使用以下方法: 86400.0 0

  • 问题内容: 大家好, 在我的项目中,我需要计算 两个日期之间以秒为单位 的 时差 : 例如 : 然后我应该得到 86400秒, 即24小时。 类似地 它应该返回 60秒 。 我读了很多问题,其中 2分钟字段*之间的区别是 11:50:01和12:10:57 *** 问题答案: $timeFirst = strtotime(‘2011-05-12 18:20:20’); $timeSecond =