簡體   English   中英

將任何字符串解析為Sql date

[英]Parse any string to Sql date

我想知道是否有可能在不指定字符串格式的情況下將任何字符串(至少嘗試)解析為sql Date嗎? 換句話說,我想創建一個通用方法,將一個字符串作為輸入並返回一個sql Date。

例如,我有:

String date1="31/12/2099";
String date2="31-12-2099";

並調用parseToSqlDate(date1)和parseToSqlDate(date2),這將返回sql日期。

簡短答案:否

原因:將任何字符串解析為有效日期是您作為聰明人無法完成的任務(沒有“邏輯”方法來確定正確的日期),因此您無法“告訴”計算機(程序)來執行此操作您(請參閱JGrice的評論,那里還有4位數字的年份)。

長答案:也許,如果您願意冒險或不需要很高的成功率。

怎么樣:

  1. 定義日期的最低要求(格式)。 例如,“最小日期包含1-8個數字; 01/01/2001,01-01-01,01.01(+當年),1.1(+當年),1(+當月+當年)和/或” ..包含1-6個數字和幾個月的字母”; 2001年1月1日,依此類推。

  2. 使用[^ 0-9a-zA-Z]之類的正則表達式將輸入沿任何非數字/非月份名稱字符進行分割(快速想到,可能會有一些陷阱)

  3. 您現在擁有1到3個(如果包含例如時間,實際上更多)個單獨的數字+ 1個月份的名稱,可以按照自己喜歡的方式將其與年/月/日對齊

對於這種“對齊”,有幾種可能性:

  • 首先嘗試固定格式,如果“合適”,則采用它,否則嘗試另一種(或失敗)
  • (一次只有一個用戶獲得多個條目),通過假設所有條目都相同來猜測格式(例如,任何包含值> 12的數字塊都不是一個月,而> 31則不是一天)

但是 ,這是一個很大的方法,您可以期望任何這樣的方法在某個時候都會成為主要的PITA,因為您永遠無法完全“信任”該方法以正確猜測(您永遠不能確定錯過了某些特殊格式或引入了這種格式)一些模棱兩可的解釋)。 我概述了一些案例/格式,但絕對不是全部,因此,如果您實際使用它,您將經常改進該方法。

您的評論的附錄:“可能是添加另一個參數,並以此方式知道星期幾,星期幾等等?” 因此,您願意添加“偽格式字符串”參數來指定日,月和年的順序; 這將使其變得更加容易(因為可以“簡單地”過濾出定界符)。

暫無
暫無

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

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