2017-02-14 4 views
-1

私は1954-09-15という形式で私のプログラムに生年月日を設定しています。この生年月日を使用してその人の年齢を確認するにはどうすればよいですか?Clojureで生年月日を計算するにはどうすればいいですか?

+0

http://stackoverflow.com/questions/19521146/calculate-age-based-on-date-of-birth私が必要 – Pramitha

+0

clojure言語の結果(年数) – user123

+2

あなたはclj-timeを使用してみましたか?https://github.com/clj-time/clj-time – Scott

答えて

0

Clojureでは、時間と関係がある処理にはclj-timeを使用するのが一般的です。しかし、追加の依存関係を取りたくない場合は、問題のためにjava.timeを使用することができます。ただし、Clojureを使用してJavaライブラリを使用する場合は、ClojureのJava interopを理解する必要があります。

まず、必要なJavaの依存関係をimportにインポートする必要があります。機能ageインサイド

あなたの入力文字列(人物の誕生日を)持っているパターンについてdate-formatterを作成する - この場合は"yyyy-MM-dd"です。

次に、作成したdate-formatterを使用して入力を解析し、LocalDateオブジェクトを作成します。

その後、別のLocalDateオブジェクトを作成し、実行時の時刻を保持します。

最後に、LocalDateオブジェクトの作成された2つのオブジェクトの差異を年単位で計算します( `ChronoUnit/YEARS ')。

(ns age-of-person.core 
    (:import (java.time LocalDate 
         format.DateTimeFormatter 
         Year 
         temporal.ChronoUnit))) 

    (defn age [birthdate] 
     (let [date-formatter (DateTimeFormatter/ofPattern "yyyy-MM-dd") 
      birthdate (LocalDate/parse birthdate date-formatter) 
      now (LocalDate/now) 
      age (.until birthdate now ChronoUnit/YEARS)] 
     age)) 

方法age呼び出すと、次のようになります。

age-of-person.core=> (age "1954-09-15") 
62 
関連する問題