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

Reply via email to