Преобразование даты в эпоху в clojure или jython

Я ищу формулу для преобразования даты в эпоху времени в OpenRefine. Я знаю, что язык GREL не поддерживает это, но мне интересно, работает ли clojure или jython, и если да, то как?

Я не знаком с этими языками вообще.

Сейчас я использую вызов API с этим сервисом, но это длительный процесс с большим набором данных.

Спасибо

5 ответов

Решение

Так что у меня есть решение из списка рассылки OpenRefine. Я конвертировал строку в дату и использовал

value.toDate('dd-MM-yy','dd-MMM-yy').toString('dd-MM-yyyy')

Создайте объект даты для времени, которое вы хотите (по умолчанию это сейчас), а затем вызовите.getTime для него:

user> (.getTime (java.util.Date.))                                         
1361830209902

или если вы хотите время эпохи для конкретной даты:

user> (import java.text.SimpleDateFormat) 
user> (.getTime (.parse (SimpleDateFormat. "yyyy MM dd HH mm ss") "2013 02 25 04 06 59"))
1361794019000 

clj-time (JodaTime) предпочтительнее для манипуляции с датой и временем:

(require '[clj-time.core :as cljt])
(require '[clj-time.coerce :as cljc])

(cljc/to-long (cljt/now))

Я получил это, работая в OpenRefine, выполнив преобразование в столбце даты, установив язык на Clojure и используя эту команду:

(.getTime value)

очень похоже на ответ @arthur-ulfeldt, но хотел уточнить вещи специально для OpenRefine.

Для Python (включая реализацию Jython) вы можете использовать time модуль:

import time
print(time.mktime(time.strptime('2012-02-12 12:34:56', '%Y-%m-%d %H:%M:%S')))
Другие вопросы по тегам