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

Java计算从当前时间到事件的时间

卫景明
2023-03-14
问题内容

我正在尝试计算直到足球比赛开始为止的时间。

这是我所知道的:

  • 我有活动时间: 2016-08-16T19:45:00Z
  • 我知道它的字符串格式是“ yyyy-M-dd’T’h:m:s’Z’
  • 我知道时区是“ CET”。

我希望能够以天为单位计算当前时间与该日期之间的时差。

这是我尝试过的:

    String gameDate = "2016-03-19T19:45:00'Z'"
    DateFormat apiFormat = new SimpleDateFormat("yyyy-M-dd'T'h:m:s'Z'");
    apiFormat.setTimeZone(TimeZone.getTimeZone("CET"));
    Date dateOfGame = apiFormat.parse(gameDate);

    DateFormat currentDateFormat = new SimpleDateFormat("yyyy-M-dd'T'h:m:s'Z'");
    currentDateFormat.setTimeZone(TimeZone.getTimeZone(userTimezone));
    Date currentDate = apiFormat.parse(currentDateFormat.format(new Date()));

    long lGameDate = dateOfGame.getTime();
    long lcurrDate = currentDate.getTime();
    long difference = lGameDate - lcurrDate;
    Date timeDifference = new Date(difference);

    String daysAway = new SimpleDateFormat("d").format(timeDifference);
    Integer intDaysAway = Integer.parseInt(daysAway);

您可能想知道为什么我不只是获得游戏日期(8)并减去当前日期(19)。在当前日期是29号而游戏日期是下个月的3号的情况下,我不这样做。


问题答案:

尝试做/使用TimeUnit

final String gameDate = "2016-03-19T19:45:00Z";
final SimpleDateFormat apiFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'", Locale.US);
apiFormat.setTimeZone(TimeZone.getTimeZone("CET"));
final Date dateOfGame = apiFormat.parse(gameDate);
final long millis = dateOfGame.getTime() - System.currentTimeMillis();
System.out.println(dateOfGame.getTime() - System.currentTimeMillis());

final String hms = String.format("%02d:%02d:%02d", TimeUnit.MILLISECONDS.toHours(millis),
                TimeUnit.MILLISECONDS.toMinutes(millis) - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis)),
                TimeUnit.MILLISECONDS.toSeconds(millis) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis)));
System.out.println(hms);

这将打印输出:

72:57:34

从现在起到gameDate,共需要72小时57分34秒



 类似资料:
  • 问题内容: 我有一条流经多个系统的消息,每个系统都会记录消息的进入和退出以及时间戳和uuid messageId。我通过以下方式提取所有日志: 结果,我现在有以下事件: 我想生成一个报告(最好是堆积的条或列),用于每个系统的时间: 做这个的最好方式是什么?Logstash过滤器?kibana计算字段? 问题答案: 您只能使用Logstash 过滤器来实现此目的,但是,您必须实质性地重新实现该过滤器

  • 问题内容: 使用Java访问系统时钟的简便方法是什么,以便我可以计算事件的经过时间? 问题答案: 我会避免使用它来测量经过时间。返回“壁钟”时间,该时间可能会更改(例如:夏时制,管理员用户更改时钟)并会使您的间隔测量值偏斜。 另一方面,返回自“某个参考点”(例如,JVM启动)以来的纳秒数,因此不会受到系统时钟变化的影响。

  • 问题内容: 我需要计算两个日期之间经过的时间。 这里要注意的是,我需要像YouTube一样用视频评论时间戳来显示它。也就是说,仅以最大的方式显示它。 例如, 如果时间是50秒前,应该说是50秒前。 如果时间超过一分钟,则应说一分钟前/十分钟前,等等。 如果时差是1小时30分钟,则应显示:一个小时前。 如果时间是一个半星期而不是一个星期前应该说的话。 如果时间超过一个月,则应说一个月前/两个月前,等

  • 在Ruby on Rails中,有一个特性允许您使用任何日期并打印出它是多么“久远”。 例如: 在Java有什么简单的方法可以做到这一点吗?

  • 我正试图在RoR上创建一个计算时间的应用程序。 当您按下开始按钮时,它会拉Time.now,然后,当您按下停止时,它会再次拉Time.now,然后计算两者之间的时间量。然后它会通过to_i将给定的秒转换为整数,然后将整数秒计算为小时:分钟:秒 然而,我的代码出了点问题,它不停地抛出一个又一个错误。 当前顺序为 nil:NilClass 的“未定义方法 '-'”