簡體   English   中英

查找未知日期字符串的模式

[英]Find pattern of unknown date string

對Java來說還算是新手,但試圖弄清楚如何解決我遇到的問題。 我通讀了許多有關在Java中格式化未知日期/時間的文章,因為我知道您需要首先了解日期的模式,然后才能開始解析日期。 是否可以給定String日期(例如2/21/2019 ,此方法將返回此日期字符串的格式。 我發現ofPattern util,但似乎只返回格式的模式,而不是像上面的字符串。

我在尋找類似下面的偽代碼的東西。 如果我能夠返回給定字符串的日期模式,則可以使用SimpleDateFormat動態傳遞模式。

String date = '2/21/2019';
Date datePattern = date.getPattern();
// datePattern would output ""MM/dd/yyyy""
SimpleDateFormat formatter = new SimpleDateFormat(datePattern);  
String strDate = formatter.format(date);  

再次感謝,

是否可以給定String日期(例如2/21/2019),此方法將返回此日期字符串的格式。

不可以。Java無法解釋字符串的含義。 許多日期字符串格式可能不明確。 1/2/3是2003年1月的第二天,2003年2月的第一天還是2001年3月2日?

搜索堆棧溢出。 您會發現許多有關解析各種日期時間格式的字符串的問題和答案,包括我今天寫的答案

  • 如果您有不可預測的輸入,那么當然不可能有可靠的解決方案,只能是猜測。
  • 如果您可以標識使用中的有限一組非歧義格式,則定義一組DateTimeFormatter對象。 對於任何輸入,請依次嘗試每個格式化程序,直到一個有效為止(不會引發DateTimeParseException )。

真正的解決方案是教育您的數據發布者有關ISO 8601的問題

最后一件事:永遠不要使用SimpleDateFormat 可怕的傳統日期時間類在幾年前被現代的java.time類所取代。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM