我正在寻找在 OpenRefine 中将日期转换为纪元时间的公式。我知道 GREL 语言不支持这一点,但我想知道 clojure 或 jython 是否支持,如果支持如何?
我根本不熟悉这些语言。
现在我正在使用 API 调用这个服务,但这是一个包含大量数据集的漫长过程。
谢谢
我正在寻找在 OpenRefine 中将日期转换为纪元时间的公式。我知道 GREL 语言不支持这一点,但我想知道 clojure 或 jython 是否支持,如果支持如何?
我根本不熟悉这些语言。
现在我正在使用 API 调用这个服务,但这是一个包含大量数据集的漫长过程。
谢谢
为您想要的时间创建一个日期对象(默认为现在),然后在其上调用 .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))
对于 Python(包括 Jython 实现),您可以使用time
模块:
import time
print(time.mktime(time.strptime('2012-02-12 12:34:56', '%Y-%m-%d %H:%M:%S')))
所以我从OpenRefine 邮件列表中找到了解决方案。我一直在将字符串转换为日期并使用
value.toDate('dd-MM-yy','dd-MMM-yy').toString('dd-MM-yyyy')
通过对日期列执行转换,将语言设置为 Clojure 并使用以下命令,我在 OpenRefine 中得到了这个工作:
(.getTime value)
与@arthur-ulfeldt 的答案非常相似,但想澄清一下专门针对 OpenRefine 的事情。