#:g1: date-calcの紹介

Posted 2014-05-27 12:10:00 GMT

(LISP Library 365参加エントリ)

 LISP Library 365 の147日目です。

date-calcとはなにか

 date-calcは、PerlのDate::CalcモジュールをCommon Lispへ移植したものです。

パッケージ情報

パッケージ名date-calc
Quicklisp
参考サイト
CLiKihttp://cliki.net/date-calc
Quickdocshttp://quickdocs.org/date-calc

インストール方法

(ql:quickload :date-calc)

試してみる

 どんな関数があるかは、Quickdocsで確認できます。

 大体Perlのオリジナルと同じAPIが用意されています。

;; 今日の日付を取得
;; perl: ($year, $month, $day) = Today();

(multiple-value-bind (year month day)
                     (date-calc:today)
  (list year month day))
;=>  (2014 5 27)

;; 現在のタイムスタンプを取得(形式:2003-06-12 ) ;; perl: ($year, $month, $day, $hour, $min, $sec) = Today_and_Now(); (multiple-value-bind (year month day hour min sec) (date-calc:today-and-now) (list year month day hour min sec)) ;=> (2014 5 27 20 46 4)

;; 現在の曜日を数字にて取得 ;; perl: $day_of_week = Day_of_Week($year,$month,$day); (date-calc:day-of-week 2014 5 27) ;=> 2

;; 現在の曜日をテキストにて取得 ;; perl: $string_full = Day_of_Week_to_Text($day_of_week); (elt (gethash 1 date-calc::day-of-week-to-text) (date-calc:day-of-week 2014 5 27)) ;; ??? ;=> "Tuesday"

;; 今日の曜日をテキスト(省略形)にて取得 ;; perl: $string_abb = Day_of_Week_Abbreviation($day_of_week); (elt (gethash 1 date-calc::day-of-week-abbreviation) (date-calc:day-of-week 2014 5 27)) ;=> "Tue"

;; 昨日の日付を取得 ;; perl: ($d_year, $d_month, $d_day) = Add_Delta_Days($year, $month, $day, -1); (date-calc:add-delta-days 2014 5 27 -1) ;=> 2014 ; 5 ; 26

;; 一年三ヶ月後の日時を取得 ;; perl: Add_Delta_YM($year, $month, $day,+1,+3); (date-calc:add-delta-ym 2014 5 27 1 3) ;=> 2015 ; 8 ; 27

;; 指定月の日数を取得(月末日の取得) ;; perl: $days = Days_in_Month($year,$month); (date-calc:days-in-month 2014 5) ;=> 31

;; 指定した日付が実在するかどうか確認。実在する場合1を返す(CLではt/nil) ;; perl: check_date(2004, 2, 31); (date-calc:check-date 2004 2 31) ;=> NIL

まとめ

 今回は、date-calcを紹介してみました。
Common Lispだとlocal-timeが良く使われるかなと思いますが、date-calcも結構手軽なので割と自分は使ったりします。

comments powered by Disqus