Преобразование даты в эпоху в 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')))