【问题标题】:How to calculate user entered time in JAVA [closed]如何计算用户在JAVA中输入的时间[关闭]
【发布时间】:2013-03-01 12:52:07
【问题描述】:

大家好,我需要帮助来弄清楚如何计算两个特定时间之间的时间差(由用户输入)。但是输出必须以小时、分钟和秒作为它们自己的变量。

示例:

开始时间:

小时:15 分钟:50 第二:00

结束时间:

小时:17 分钟:14 第二:23

结果:1​​ 小时 24 分 23 秒

编辑:这是我到目前为止所得到的,这是我的问题的计算

public static void main(String[] args) 
{
    Scanner in = new Scanner(System.in);
    System.out.println("Starttime:");
    System.out.println("---------");

    System.out.print("Hour: ");
    int HourS = in.nextInt();
    System.out.print("Minute: ");
    int minuteS = in.nextInt();
    System.out.print("Second: ");
    int secondS = in.nextInt();


    System.out.println("\t");

    System.out.println("Finishtime:");
    System.out.println("------------");

    System.out.print("Hour: ");
    int hourF = in.nextInt();
    System.out.print("Minute: ");
    int minuteF = in.nextInt();
    System.out.print("Second: ");
    int secondM = in.nextInt();

【问题讨论】:

  • 我卡在用户指定时间的实际计算上。我试过做小时 - 小时和分钟 - 分钟和秒 - 秒,但我很快意识到这不会随着时间的推移而工作
  • 你必须记住事情是重叠的——每次一秒变成负数(例如 23 - 50),你必须从分钟中取一个并将 60 添加到秒,并将相同的应用于分钟(同样,从秒开始,而不是小时)。
  • 谢谢,这就是我想要的。非常感谢!

标签: java date datetime time duration


【解决方案1】:

使用 JodaTime - 它做得很好。

这个简单的例子计算两个时间戳之间的差异并打印出人类可读的:

    String a = "00:01:09:340";
    String b = "00:02:03:430";

    DateTimeFormatter format = DateTimeFormat.forPattern("HH:mm:ss:SSS");
    DateTime oldTime = DateTime.parse(a, format);
    DateTime newTime = DateTime.parse(b, format);
    Interval interval = new Interval(oldTime, newTime);

    System.out.println(new StringBuffer("hours: ").append(interval.toDuration().getStandardHours())
            .append(" minutes: ").append(interval.toDuration().getStandardMinutes()).append(" seconds: ")
            .append(interval.toDuration().getStandardSeconds()).append(" milliseconds: ")
            .append(interval.toPeriod().getMillis()).toString());

该示例将为您提供以下输出:

hours: 0 minutes: 0 seconds: 54 milliseconds: 90

【讨论】:

    【解决方案2】:

    这是以毫秒为单位的差异:

    SimpleDateFormat format = new SimpleDateFormat("HH:mm:ss");
    Date date = format.parse(time);
    Date dateB = format.parse(timeB);
    long difference = dateB.getTime() - date.getTime();
    

    你可以把它转换成你想要的格式。

    【讨论】:

      【解决方案3】:
      public static void main (String [] args) throws Exception
      {
          SimpleDateFormat format = new SimpleDateFormat ("'Hour: 'HH' Minute: 'mm' Second: 'ss");
      
          BufferedReader reader = 
              new BufferedReader (
                  new InputStreamReader (System.in));
      
          System.out.print ("Starting time: ");
          long startingTime = format.parse (reader.readLine ()).getTime ();
          System.out.print ("Finish time: ");
          long finishTime = format.parse (reader.readLine ()).getTime ();
      
          long delta = finishTime - startingTime;
      
          long seconds = delta / 1000 % 60;
          long minutes = delta / 60000 % 60;
          long hours = delta / 3600000;
      
          System.out.println (
              "Result: " + hours + " hour(s) " + minutes + 
              " minute(s) " + seconds + " second(s)");
      }
      

      对我来说输出是:

      Starting time: Hour: 15 Minute: 50 Second: 00
      Finish time: Hour: 17 Minute: 14 Second: 23
      Result: 1 hour(s) 24 minute(s) 23 second(s)
      

      【讨论】:

        【解决方案4】:

        您可能想考虑使用 JODA-time,它支持更复杂的日期计算方法。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-04-01
          • 2013-10-30
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多