I had forgotten about this option too. Time to reread the dictionaries. Sent from my iPhone
> On Mar 2, 2014, at 12:06 PM, Björn Helgason <gos...@gmail.com> wrote: > > !!! > > Nice!!! > > I did not know this. > > At least forgot if I did know. > > Very useful. > > Thanks! > > - > Björn Helgason > gsm:6985532 > skype:gosiminn >> On 2.3.2014 12:35, "R.E. Boss" <r.e.b...@outlook.com> wrote: >> >> The obvious being >> >> 6!:0 'YYYY-MM-DDThh:mm:ss' >> 2014-03-02T13:32:57 >> >> ? >> >> >> R.E. Boss >> >> (Add your info to http://www.jsoftware.com/jwiki/Community/Demographics ) >> >> >>> -----Original Message----- >>> From: programming-boun...@forums.jsoftware.com [mailto:programming- >>> boun...@forums.jsoftware.com] On Behalf Of Raul Miller >>> Sent: zondag 2 maart 2014 10:05 >>> To: Programming forum >>> Subject: [Jprogramming] iso time format with 8!:2 >>> >>> Given >>> 6!:0'' >>> 2014 3 2 3 30 46.034 >>> >>> I'd like to generate the string >>> 2014-03-02T03:30:46 >>> >>> And, to make things just a bit strange, I'd like to use 8!:2 instead of >> the >>> obvious. >>> >>> Just to be clear, though, here's my idea of "obvious": >>> >>> }:;(1,5#3)<@}."_1'--T:: ',.~":,.10000+<.6!:0'' >>> >>> By obvious, I do not mean that I instantly thought of that expression, I >>> had to think a few minutes, and I had a few errors to fix in my initial >>> concept. But by "obvious" I mean that I am using the basic J vocabulary. >>> >>> Picking up the vocabulary isn't instant, though, and I'm using 14 >> different >>> words from the vocabulary (plus some nouns and a pair of parenthesis). So >>> if we expect a person to pick up five words from the vocabulary a week, >>> that's at least three weeks of training before a person could be >> reasonably >>> comfortable composing a sentence like that. >>> >>> Now... the 8!:0, 8!:1 and 8!:2 verbs do have their own tiny vocabulary as >>> represented by their format strings. But these are examples of extremely >>> specialized words - not very powerful at all, which means they require >> less >>> study than J as a whole, and (within their limited capabilities) will >> tend >>> to be faster that a more general approach. >>> >>> Formatting is not likely a speed bottleneck for iso date formatting - >> it's >>> more when you have a big sheet of numbers and a weak computer that you >>> might care about formatting time. But it's still an interesting exercise. >>> (Or a boring one, if you are not interested in formatting text.): >>> >>> So... here's how I approached this exercise: >>> >>> <.2014 3 2 3 30 46.034 >>> 2014 3 2 3 30 46 >>> >>> Let's just ignore the decimal part, for now. >>> >>> '4' 8!:2 <.2014 3 2 3 30 46.034 >>> 2014.00003.00002.00003.000030.000046.0000 >>> >>> Looks like a number by itself is decimal places after the decimal point. >>> >>> '4.' 8!:2 <.2014 3 2 3 30 46.034 >>> 2014 3 2 3 30 46 >>> >>> But a decimal point in the format specifier fixes that. >>> '4.,2.,2.,2.,2.,2.' 8!:2 <.2014 3 2 3 30 46.034 >>> 2014 3 2 33046 >>> >>> I need commas to separate the format specifiers for independent columns. >>> >>> '4.,r<0>2.,2.,2.,2.,2.' 8!:2 <.2014 3 2 3 30 46.034 >>> 201403 2 33046 >>> >>> The r option gives "fill" or, in this context "leading zeros", but each >>> format needs this spec. >>> >>> '4.,r<0>2.,r<0>2.,r<0>2.,r<0>2.,r<0>2.' 8!:2 <.2014 3 2 3 30 46.034 >>> 20140302033046 >>> >>> Getting bulky, but now all my two digit numbers can have leading zeros. I >>> could get fancy here, and use J to build the format specifier, but that's >>> premature, watch: >>> >>> '4.,p<->r<0>2.,p<->r<0>2.,p<T>r<0>2.,p<:>r<0>2.,p<:>r<0>2.' 8!:2 >> <.2014 >>> 3 2 3 30 46.034 >>> 2014-3-2T3**** >>> >>> Here, I've added a prefix for each number, to get the various separators. >>> Unfortunately, I forgot to widen each column to make things fit. >>> >>> '4.,p<->r<0>3.,p<->r<0>3.,p<T>r<0>3.,p<:>r<0>3.,p<:>r<0>3.' 8!:2 >> <.2014 >>> 3 2 3 30 46.034 >>> 20140-30-20T3:30:46 >>> >>> That's... better ,but now we can see that the concept of fill interacts >>> badly with the concept of using a prefix, so let's try using a suffix >>> instead: >>> 's<->4.,s<->r<0>3.,s<T>r<0>3.,s<:>r<0>3.,s<:>r<0>3.,r<0>3.' 8!:2 >> <.2014 >>> 3 2 3 30 46.034 >>> |domain error >>> >>> Oops, suffix is a q, not an s. >>> >>> 8!:2<.2014 3 2 3 30 46.034 >>> 'q<->4.,q<->r<0>3.,q<T>r<0>3.,q<:>r<0>3.,q<:>r<0>3.,r<0>3.' 8!:2 >> <.2014 >>> 3 2 3 30 46.034 >>> ****03-02T03:30:046 >>> >>> Almost done but I need to adjust my column widths again. >>> >>> 'q<->5.,q<->r<0>3.,q<T>r<0>3.,q<:>r<0>3.,q<:>r<0>3.,r<0>2.' 8!:2 >> <.2014 >>> 3 2 3 30 46.034 >>> 2014-03-02T03:30:46 >>> >>> Done. >>> >>> And, that's not actually a whole lot more verbose than the other >> expression. >>> >>> It's tempting to think about making 8!:2 more powerful, but it's not >> really >>> about power - it's a specialized tool for a specialized task. If you want >>> the full generality of J, it's available. >>> >>> Of course, if you really want an iso formatted timestamp, you could >> always >>> find another way to get that. Learning exercises necessarily restrict >>> themselves in various ways. >>> >>> Also... http://en.wikipedia.org/wiki/ISO_8601 points out that the >> standard >>> really covers a lot of ground. And one thing we do not currently have in >> J >>> is a way of getting at what the operating system thinks is the time zone >> of >>> the user. That can matter if you are on a phone (where back a few decades >>> ago, computers were a bit harder to carry). >>> >>> Thanks, >>> >>> -- >>> Raul >>> ---------------------------------------------------------------------- >>> For information about J forums see http://www.jsoftware.com/forums.htm >> ---------------------------------------------------------------------- >> For information about J forums see http://www.jsoftware.com/forums.htm > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm