2017-10-10 109 views
0

我需要對視頻時間戳進行驗證。所以基本上在我的情況下,小時數可以大於24.在Java中執行此驗證的最佳方法是什麼?對於標準的24小時驗證,我做了以下工作。驗證視頻時間戳

private static DateTimeFormatter dateFormat = DateTimeFormatter.ofPattern("HH:mm:ss"); 
LocalTime.parse("20:00:12", dateFormat); 

我想在我的前端Javascript中做類似的驗證。 對於正常的24小時模式,我使用正則表達式進行了測試:new RegExp("(0[0-9]|1[0-9]|2[0-3])(:[0-5][0-9]){2}");有沒有類似於輸入掩碼的Jquery插件,我可以使用它在UI文本框中強制執行此模式?

回答

2

對於Java,爲什麼不直接使用第一原則:

String timestamp = "343:45:37"; 
String[] components = timestamp.split(":"); 
boolean validTimestamp = false; 
int h = -1, m = -1, s = -1; 
try { 
    if (validTimestamp = components[1].length() == 2 && components[2].length() == 2) { 
     h = Integer.valueOf(components[0]); 
     m = Integer.valueOf(components[1]); 
     s = Integer.valueOf(components[2]); 
    } 
} catch (Exception e) { 
    e.printStackTrace(); 
} 
validTimestamp = validTimestamp && h >= 0 && m >= 0 && m < 60 && s >= 0 && s < 60; 
+0

所有的單個元素也應該是2位數字 – user1692342

+0

對不起,但我認爲OP說,超過24小時需要接受。此外,不需要檢查單個組件的長度,因爲它們的數值在最後一行被檢查。 – ovimunt

+0

是的,除了小時以外,其他所有的數字都必須是數字......有了這個邏輯偶數:9:1:1是有效的,這是沒有意義的 – user1692342

0

Aparently我無法添加評論,所以我會將它作爲答案發布。

我的策略是使用<input type="time">標記https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/time

還有一個用於舊瀏覽器支持的polyfill。 https://github.com/jonstipe/time-polyfill

除此之外,我喜歡依靠後端來提供大多數驗證和錯誤響應。

+0

時間屬性確實24小時驗證。另外在我的情況下,沒有上午/下午的概念 – user1692342