2011-05-02 91 views
6

我在Common Lisp(SBCL)中編寫了一個簡單的網頁掃描器作爲學習練習,&想按日期排序。爲此,我需要將格式爲「MM/DD/YYYY」的日期解析爲世界時。打包解析Common Lisp中的日期?

我可以簡單地標記字符串&將這些位傳遞給encode-universal-time,但我認爲必須有用於日期分析的內置函數(或常用的第三方包)。我非常感謝有人推薦一個:-)

+1

有趣的切線:我發現一個庫有一個網站的評論「fixme:不解析yyyymmddTHHMMSS Z神是該死的一切。需要大修「,所以我想我會跳過那一個;-) – 2011-05-02 07:29:19

回答

1

許多實現都有一個UNIX接口,在相同的情況下,這包括strptime函數。

1

Antik處理日期和時間,幷包括日期/時間分析器。結果是一個「時間點」,默認情況下是UTC(CL的「通用時間」有些不同,但可以轉換爲該時間點)。

4

這個答案很晚,但local-time函數庫是有特色的,被廣泛使用。它基於文章The long painful history of time

supports

  1. 時間和日期算術
  2. ISO 8601 TIMESTRING格式化輸出和解析
  3. 讀者宏嵌入timestrings直接在代碼中
  4. 時區處理(將讀取UNIX tzfile格式)
  5. 通用和unix時間曆元之間的轉換
  6. 儒略日期計算
+2

是的,但它不支持解析日期的字符串表示形式 – hijarian 2015-12-12 07:41:31

+1

@hijarian我已經使用包cl-date-time-parser來做到這一點,它可以採取各種常見的表示形式,並將它們轉換爲通用時間秒整數表示形式。 – 2016-04-22 17:09:56

+1

@hijarian它取決於字符串表示形式。例如,雖然'(local-time:parse-timestring「2009/06/02「)'有問題,本地時間解析可以與其他字符串格式一起使用 - 例如'(local-time:parse-timestring」2009-06-02「)'。 – dat 2017-02-17 07:17:16