如何从Q日期类型生成ISO日期字符串“yyyy-MM-dd”?我看着连接各个部分但是甚至无法获得日/月,例如d:2015.12.01;d.month
打印2015.12
,即不仅仅是月份。
q)"-" sv "." vs string[2015.12.01]
"2015-12-01"
来自字符串的vs
矢量,由“。”分割。以上; sv
字符串到向量,通过上面的“ - ”加入。
请记住,字符串只是一个char数组,因此您可以根据需要使用索引来获取每个部分。但是以上是有用的,因为vs
的结果矢量给出了一个3长度的矢量,你可以按照自己喜欢的方式进行操作
如果您打算大规模地进行(即大型向量/日期列表或表格中的列),并且您确定日期总是格式良好,那么您可以使用点修改:
q)update .[;(::;4 7);:;"-"]string date from ([] date:2#.z.D)
date
------------
"2016-01-04"
"2016-01-04"
这样您就不必应用于向量/列表的“每个”条目,它可以在向量/列表本身上工作。
我使用的是这样的东西:
q)ymd:{[x;s](4#d),s,(2#-5#d),s,-2#d:string[x]}
q)ymd[.z.D;"-"]
"2016-01-25"
q)ymd[.z.D;"/"]
"2016/01/25"
q)ymd[.z.D;""]
"20160125"
或者对于表格:
q)t:([]a:5#1;5#.z.d)
q)update s:ymd[;"-"] each d from t
a d s
-------------------------
1 2016.01.26 "2016-01-26"
1 2016.01.26 "2016-01-26"
1 2016.01.26 "2016-01-26"
1 2016.01.26 "2016-01-26"
1 2016.01.26 "2016-01-26"
请在update语句中更改-
或/
之类的分隔符。
update s:{ssr[string x;".";y]}'[d;"-"] from ([]a:5#1;5?.z.d)
a d s
-------------------------
1 2010.12.31 "2010-12-31"
1 2012.08.24 "2012-08-24"
1 2004.12.05 "2004-12-05"
1 2000.10.02 "2000-10-02"
1 2006.09.10 "2006-09-10"
检查此GitHub library的日期时间格式。它支持格式化日期和时间的excel方式。它可能不适合格式化大量对象。
q).dtf.format["yyyy-mm-dd"; 2018.06.08T01:02:03.456]
"2018-06-08"
时间格式:
q).dtf.format["yyyy-mmmm-dd hh:uu AM/PM"; 2018.01.08T01:02:03.456]
"2018-January-08 01:02 AM"