第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

比較 MM:SS 格式的兩個時間

比較 MM:SS 格式的兩個時間

森欄 2023-08-09 15:27:36
我希望以 MM:SS 格式比較兩次,并在幾秒鐘內(nèi)得到這兩次之間的差異例如時間 1 = 20:28 ,時間 2 = 20:18相差-10秒我嘗試使用以下方法來比較時間        LocalTime start = LocalTime.parse( "20:28" );        LocalTime stop = LocalTime.parse( "20:18" );        Duration duration = Duration.between( start, stop );        System.out.println(duration.getSeconds());實際:這將打印-600秒作為輸出,因為時間以 HH:MM 格式解析。預(yù)期的 -10考慮到 MM:SS 格式,是否有任何其他方法可以讓我獲得預(yù)期的輸出。
查看完整描述

4 回答

?
紅顏莎娜

TA貢獻(xiàn)1842條經(jīng)驗 獲得超13個贊

由于LocalTime似乎無法使用DateTimeFormatter的模式mm:ss,您還可以創(chuàng)建一個簡短的static輔助方法來調(diào)用。


此方法將所有解析的默認(rèn)時間設(shè)置為相同的值,這不會暴露其他任何"00:"地方,如果意外輸入不同的時間,則可能容易出現(xiàn)錯誤。


這將確保任何Duration.between()分鐘和秒都是準(zhǔn)確的:


public static void main(String [] args) {

? ? LocalTime start = parseHelper("20:28");

? ? LocalTime stop = parseHelper("20:18");

? ? Duration duration = Duration.between(start, stop);

? ? System.out.println(duration.getSeconds());

}


private static LocalTime parseHelper(String str) {

? ? return LocalTime.parse("00:" + str);

}

輸出:

-10

輸出將是以下 ISO-8601 格式之一:

HH:mm
HH:mm:ss
HH:mm:ss.SSS
HH:mm:ss.SSSSSS
HH:mm:ss.SSSSSSSS


查看完整回答
反對 回復(fù) 2023-08-09
?
慕妹3242003

TA貢獻(xiàn)1824條經(jīng)驗 獲得超6個贊

    LocalTime start = LocalTime.parse( "00:20:28" );

    LocalTime stop = LocalTime.parse( "00:20:18" );

    Duration duration = Duration.between( start, stop );

    System.out.println(duration.getSeconds());

您以錯誤的方式保存日期。您還必須提供時間。當(dāng)你傳遞2個參數(shù)(20:18)時,它認(rèn)為第一個為小時,第二個為分鐘。這就是為什么它返回 600 秒。600秒等于10分鐘。這是兩個參數(shù)之間的時間差。


查看完整回答
反對 回復(fù) 2023-08-09
?
喵喵時光機

TA貢獻(xiàn)1846條經(jīng)驗 獲得超7個贊

您可能使用LocalTime方法不正確。


假設(shè)你想要你所說的你想要的,訣竅是定義一個格式化程序,假設(shè)一天中的小時為 0。我們需要的parseDefaulting方法是:DateTImeFormatterBuilder


    DateTimeFormatter mmssFormatter = new DateTimeFormatterBuilder()

            .appendPattern("mm:ss")

            .parseDefaulting(ChronoField.HOUR_OF_DAY, 0)

            .toFormatter();


    LocalTime start = LocalTime.parse( "20:28", mmssFormatter );

    LocalTime stop = LocalTime.parse( "20:18", mmssFormatter );

    Duration duration = Duration.between( start, stop );

    System.out.println(duration.getSeconds());

輸出是:


-10


時間字符串被解析為時間 00:20:28 和 00:20:18。我不明白的是,將自己限制在晚上 00:00:00 到 01:00:00 之間的時間有什么意義。相反,如果您的時間相對于某個點(不一定是 00:00),那么使用Duration它們可能更正確。這個想法是,20:28 不是一天中的某個時間,但可以視為測量基準(zhǔn)和開始時間之間的持續(xù)時間。然后您可以減去持續(xù)時間:


    Duration relativeStart = parseDuration("20:28");

    Duration relativeStop = parseDuration("20:18");

    Duration duration = relativeStop.minus(relativeStart);

    System.out.println(duration.getSeconds());

我正在使用這個輔助方法:


private static Duration parseDuration(String timeString) {

    String isoTimeString = timeString.replaceFirst("(\\d{2}):(\\d{2})", "PT$1M$2S");

    return Duration.parse(isoTimeString);

}

由于Duration.parse只能解析 ISO 8601 格式的字符串,例如PT20M28S,我使用正則表達(dá)式將字符串轉(zhuǎn)換為這種格式。


輸出與之前相同。


查看完整回答
反對 回復(fù) 2023-08-09
?
手掌心

TA貢獻(xiàn)1942條經(jīng)驗 獲得超3個贊

問題是你不能有一個只有分鐘和秒的格式化程序,小時是強制性的。一種可能的方法是在字符串前面添加默認(rèn)小時:


LocalTime start = LocalTime.parse("00:20:28");

LocalTime stop = LocalTime.parse("00:20:18");

Duration duration = Duration.between( start, stop );

System.out.println(duration.getSeconds());

輸出:-10


另一種可能的方法是使用of具有默認(rèn)時間的方法:


LocalTime start = LocalTime.of(0, 20, 28);

LocalTime stop = LocalTime.of(0, 20, 18);

Duration duration = Duration.between( start, stop );

System.out.println(duration.getSeconds());

輸出:-10


查看完整回答
反對 回復(fù) 2023-08-09
  • 4 回答
  • 0 關(guān)注
  • 229 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號