2017-02-14 8 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 для своей проблемы. Вы должны понимать Java interop от Clojure, хотя, поскольку вы будете использовать библиотеку Java через Clojure.

Сначала вам необходимо импортировать необходимые зависимости java через import.

Внутри функции age вы создаете date-formatter для шаблона, что ваша входная строка (дата рождения человека) имеет - в данном случае это "yyyy-MM-dd".

Затем вы проанализируете ввод с помощью созданного date-formatter, чтобы создать объект LocalDate.

После этого вы создаете еще один объект LocalDate, который содержит время на момент выполнения.

В конце вы вычисляете разницу между двумя созданными объектами LocalDate, выраженными в годах (`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 

 Смежные вопросы

  • Нет связанных вопросов^_^