-
Five easy pieces
Posted by SJT on March 2, 2022 at 12:00 amSome days it takes me a while to get started. I need to warm up my hands and brain. Hot coffee and a small problem help.
.z.p
gives me Co-ordinated Universal Time. A neat way to convert that into a string in the unambiguous ISO 8601 format? That isq).z.p 2022.03.02D11:50:33.883331000
to give
"2022-03-02T11:50:33.883"
SJT replied 8 months ago 5 Members · 16 Replies -
16 Replies
-
Doesnt get easier than that!
But the challenge is to code it in q.
-
You can use the built in .h.iso8601
q).h.iso8601 .z.p "2022-03-02T12:27:37.506760000" q)-6_.h.iso8601 .z.p "2022-03-02T12:27:37.506"
-
I would do
@[-6_string .z.p; 4 7 10; :; “–T”]
or if you prefer narrow square brackets then
@[; 4 7 10; :; “–T”] -6_string .z.p
-
I took a similar approach
@[;4 7;:;”-“] string `datetime$.z.p
-
Haha. Nice! The good old datetime! I already erased it from my memory
-
Here is my quick attempt for which I’m sure there is a much more elegant solution
.dt.fmtd:{(`iso`dmy`mdy!({ssr[string x;”.”;”-“]};{“/” sv string `dd`mm`year$x};{“/” sv string `mm`dd`year$x}))[x] `date$y}
-
Very well gentlemen, I raze you a substitute for our departed `datetime type with `date`time
raze (ssr[;”.”;”-“];”T”,)@’string `date`time$.z.p
/ or alternatively
“T” sv (ssr[;”.”;”-“];::)@’string `date`time$.z.p
-
q)f:"T"0:2 1#"dt"$ q)f .z.p "2022-03-04T11:07:52.077" / if you want to be picky about the type q)f:first"T"0:2 1#"dt"$ q)f .z.p "2022-03-04T11:08:49.988"
-
I speculate its because its the international standard for dates so Prepare Text uses it.
At any rate I should note in the Reference that it does so.
-
I would love to know how / why this period to dash conversion is happening if anyone can shed some light?
Log in to reply.