2014-03-18 63 views
2

我是Common Lisp的初學者,目前我正在試用包local-time本地時間製作時間戳宏的使用

我試圖用make-timestamp宏創建一個日期,該宏創建了一個timestamp的實例。我諮詢了local-time manual,但我不明白我必須提供哪些論點。

宏的描述如下:

- 宏:使時間戳&鍵:日:秒:納秒

擴展爲恰好創建時間戳的實例作爲表達指定。

只要宏觀不帶任何參數,使這種情況發生:

LOCAL-TIME> (make-timestamp) 
@2000-03-01T01:00:00.000000+01:00 

2000-03-01這裏是標準的時代,所以這似乎好了爲止。

傳遞:day 3作爲參數,給了我這樣的:

LOCAL-TIME> (make-timestamp :day 3) 
@2000-03-04T01:00:00.000000+01:00 

好。但是我怎樣才能從這個數據中構建一個日期,而不必從2000-03-01開始計算日期和日期?

還有一個叫encode-timestamp功能,用來做正是我想要的(即:創建由喜歡的月份,月,年,小時,分鐘,一天提供信息等的日期):

LOCAL-TIME> (encode-timestamp 0 0 30 10 13 5 2009) 
@2009-05-13T10:30:00.000000+02:00 

但是,那麼宏應該怎麼做make-timestamp

+0

'#'make-timestamp'沒有意義。 '#''是函數的前綴。該宏被稱爲「make-timestamp」。 –

+0

'make-timestamp'只是''make-instance'timestamp ...'上的句法糖'' –

+0

具體而言,'#'make-timestamp'是'(function make-timestamp)',並且「在表示宏或特殊形式的符號上使用函數「。請參見http://www.lispworks.com/documentation/HyperSpec/Body/s_fn.htm –

回答

2

Make-timestamp被幾個編碼函數使用,包括encode-timestamp。我認爲它是相當低級的,但它可能是圖書館用戶感興趣的。

Encode-timestamp似乎只是你想要的功能。

+0

非常感謝您的回答。然後,我將使用'encode-timestamp'。 –