-1

こんにちは、2 つの特定の時間 (ユーザーが入力) の時間差を計算する方法を理解するのに助けが必要です。ただし、出力は、独自の変数として時間、分、秒に分割する必要があります。

例:

開始時間:

時: 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();
4

4 に答える 4

2

JodaTime を使用してください。すばらしい仕事をします。

この単純な例では、2 つのタイムスタンプの差を計算し、人間が読める形式で出力します。

    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
于 2013-03-01T13:00:34.090 に答える
1
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)
于 2013-03-01T12:59:45.903 に答える
1

これはミリ秒での違いです:

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

それを目的の形式に変換できます。

于 2013-03-01T12:55:15.830 に答える
0

JODA-time の使用を検討することをお勧めします。これは、より複雑な日付計算方法をサポートしています。

于 2013-03-01T12:56:06.360 に答える