Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.javascript > #22365

Re: Date Conversion ?

Path csiph.com!usenet.pasdenom.info!weretis.net!feeder4.news.weretis.net!news.teledata-fn.de!newsfeed.arcor.de!newsspool1.arcor-online.net!news.arcor.de.POSTED!not-for-mail
Content-Type text/plain; charset="UTF-8"
Message-ID <3082498.rgpu3afg7L@PointedEars.de> (permalink)
From Thomas 'PointedEars' Lahn <PointedEars@web.de>
Reply-To Thomas 'PointedEars' Lahn <cljs@PointedEars.de>
Organization PointedEars Software (PES)
Date Thu, 19 Dec 2013 12:34:10 +0100
User-Agent KNode/4.11.3
Content-Transfer-Encoding 8Bit
X-Face %i>XG-yXR'\"2P/C_aO%~;2o~?g0pPKmbOw^=NT`tprDEf++D.m7"}HW6.#=U:?2GGctkL,f89@H46O$ASoW&?s}.k+&.<b';Md8`dH6iqhT)6C^.Px|[=M@7=Ik[_w<%n1Up"LPQNu2m8|L!/3iby{-]A+#YE}Kl{Cw$\U!kD%K}\2jz"QQP6Uqr],./"?;=4v
Face iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAGFBMVEXTxa4RFk5dUWANED8PFEfy7+MGBiW+n3ZNF/QuAAACaElEQVQ4jVXUwVOcMBQG8Dc7Rc4PUntdWV2uxjDpGaGeozOp1woar4jd5t/v9wLstMwsA/ntlxdCAgUc1hjTc9/JCZfGoo3wG3HdmdAWrIJRHe7GM/TmpY5VFefuVcAkkPbLIaN8rmPmjloyZxgyR3GuJ4K0AGtJ2htz8o7yqikm759fldQXaMpbDzjKAG+8v+AugVTOPO5DOjLvGtUYQwh0CPjnVMyGd+8/GfUB5nLKJDD2aLDh5HYyMDJGDwQIo2ZmZcKbowNmAdB/AzyFhrmF2MHRb0QJJfaAnwGB6orZhoykLzJtGwF/xpYxI1dswomiUj3gTuAIqCn/4C7cULwGNBtwMTk3Y4LfKB5YUaOKBKYtpplm7u0vip8tU1NWWyI/7XdcSuIDoMt6rVHMWT0DbjHPGqDqZVSa6zleLcUTcIKLoMv3ueJluALtAo9B302zPPlrtiVScRdCjXvVh3e3JpYa/jjkuC9N+LrBMlz/eAN4eQijX2EdLo6c5tGGHwLyHFtXk89dDGHwCVhG9T0S/j55AhRZgkMCmUQXJ49TnS1wnQDvw0eAh9ICeMmEFbCnPMFzjAvsWoEWEFdYEx+S0MoUZ1gT1wId8+AF3Bl2OoEu906AUHx5VLw/gXYg/x84loOah/2UYNrgiwSwGO7RfUzVBbx/kgpckumGOi6QirtD6gkLTitbnxNol47S2jVc2vsN5kPqaAHT8uUdAJM4v/DanjYOwmUjWznGfwB7sGtAtor5BgofDuzaRj4kSQAqDakTsKORa3Q3xKi3gE1fhl71KRMqrdZ2AWNNg/YOhQyrVBnb+i+nEg4bsDA+egAAAABJRU5ErkJggg==
Subject Re: Date Conversion ?
Newsgroups comp.lang.javascript
References <bh9en6Foh76U1@mid.individual.net> <5f4va916l0r2qoto1r4iq5dh0i0dnqthnv@hive.bjoern.hoehrmann.de>
MIME-Version 1.0
Lines 96
NNTP-Posting-Date 19 Dec 2013 12:34:14 CET
NNTP-Posting-Host 503d4ccd.newsspool1.arcor-online.net
X-Trace DXC=iF=@b=h]N?\cHPTNZh_e7Qic==]BZ:af^4Fo<]lROoRQnkgeX?EC@@PKV1GJ:PY58QDZm8W4\YJN\YUVHKH;GI^W:cHGUBBDcgYARo8Th2caEY
X-Complaints-To usenet-abuse@arcor.de
Xref csiph.com comp.lang.javascript:22365

Show key headers only | View raw


Bjoern Hoehrmann wrote:

> * Mel Smith wrote in comp.lang.javascript:
>>    I have an approx 300-row table with 13 columns.  Column 3 of this
>>    table
>> contains abbreviated date strings in the following format:
>>
>>            'Mmm dd/yy' (examples:   May 31/13   Jan 1/11, etc)
>>
>>    (All dates are current or in the past with all dates in the 21st
>> Century, and IE8 must be accommodated)
>>
>>    I would like to find the *oldest* date and the *newest* date in this
>> column.
> 
> A simple solution would be to use a Regex to split the value into its
> components and converting into a form like `yyyymmdd`. You can then use
> string comparison to find the minimum and maximum value (you could sort
> the values but that has non-linear worst case behavior). In Perl,
> 
>   my ($m, $d, $y) = m#(\S+)\s+(\d+)/(\d+)#;
>   $m = {
>     Jan => 1,
>     Feb => 2,
>     ...
>   }->{$m};
> 
>   my $comparable = sprintf "%04u%02u%02u", $y, $m, $d;
> 
> In JavaScript you can use the `map` and `reduce` functions to map each
> value to the comparable value and then finding the maximum and minimum
> values in the mapped array,
> 
>   var mapped = mmmddyy_strings.map(function(e) {
>     ...
>     return comparable;
>   });
>   var minimum = mapped.reduce(...);
>   var maximum = mapped.reduce(...);

In JavaScript 1.5 and later, as in other implementations of ECMAScript, you 
can do much the same as in Perl:

  var matches = input.match(/(\S+)\s+(\d+)\/(\d+)/);
  var m = ({
    "Jan": 1,
    "Feb": 2,
    …
  })[m];

sprintf() is not a built-in, and you would have to implement it yourself 
(like I do in JSX:string.js [1]), but it is not necessary because Date 
instances – especially under these conditions – are easily constructed and 
comparable:

  var mapped = mmmddyy_strings.map(function (e) {
    /* 
     * or
      
         var matches = new jsx.regexp.String(e)
           .match(new jsx.regexp.RegExp(
             "(?<m>\\S+)\\s+(?<d>\\d+)/(?<y>\\d+)"));
     */
    var matches = input.match(/(\S+)\s+(\d+)\/(\d+)/);

    /*
     * or

         var m = ({
           "Jan": 1,
           "Feb": 2,
           …
         })[matches.groups["m"]];

     * with JSX:regexp.js [2]
     */
    var m = ({
      "Jan": 1,
      "Feb": 2,
      …
    })[matches[0]];

    return new Date("20" + matches[2], m - 1, matches[1]);
  });

It is, however, more memory-efficient to create the mapping object only 
once.

_______
[1] <http://pointedears.de/wsvn/JSX/trunk/string.js>
[2] <http://PointedEars.de/scripts/test/regexp>
-- 
PointedEars

Twitter: @PointedEars2
Please do not Cc: me. / Bitte keine Kopien per E-Mail.

Back to comp.lang.javascript | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

Date Conversion ? "Mel Smith" <med_cutout_syntel@aol.com> - 2013-12-16 15:55 -0700
  Re: Date Conversion ? Bjoern Hoehrmann <bjoern@hoehrmann.de> - 2013-12-17 01:06 +0100
    Re: Date Conversion ? Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2013-12-19 12:34 +0100
      Re: Date Conversion ? Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2013-12-20 22:29 +0100
        Re: Date Conversion ? Joao Rodrigues <groups_jr-1@yahoo.com.br> - 2013-12-23 10:00 -0200
  Re: Date Conversion ? JJ <duh@nah.meh> - 2013-12-17 07:06 +0700
    Re: Date Conversion ? Denis McMahon <denismfmcmahon@gmail.com> - 2013-12-17 00:35 +0000
      Re: Date Conversion ? "Mel Smith" <med_cutout_syntel@aol.com> - 2013-12-16 18:16 -0700
      Re: Date Conversion ? "Evertjan." <exxjxw.hannivoort@inter.nl.net> - 2013-12-17 10:09 +0100
        Re: Date Conversion ? Denis McMahon <denismfmcmahon@gmail.com> - 2013-12-17 17:02 +0000
        Re: Date Conversion ? Dr J R Stockton <reply1300@merlyn.demon.co.uk.invalid> - 2013-12-18 19:14 +0000
          Re: Date Conversion ? "Evertjan." <exxjxw.hannivoort@inter.nl.net> - 2013-12-19 15:42 +0100
            Re: Date Conversion ? "Michael F. Stemper" <michael.stemper@gmail.com> - 2013-12-19 09:20 -0600
              Re: Date Conversion ? "Evertjan." <exxjxw.hannivoort@inter.nl.net> - 2013-12-20 10:04 +0100
      Re: Date Conversion ? Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2013-12-17 15:12 +0100
        Re: Date Conversion ? Joao Rodrigues <groups_jr-1@yahoo.com.br> - 2013-12-17 18:10 -0200
          Re: Date Conversion ? Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2013-12-17 21:42 +0100
    Re: Date Conversion ? Bjoern Hoehrmann <bjoern@hoehrmann.de> - 2013-12-18 13:36 +0100
  Re: Date Conversion ? Dr J R Stockton <reply1300@merlyn.demon.co.uk.invalid> - 2013-12-17 19:02 +0000
    Re: Date Conversion ? "Mel Smith" <med_cutout_syntel@aol.com> - 2013-12-17 20:51 -0700
      Re: Date Conversion ? Dr J R Stockton <reply1300@merlyn.demon.co.uk.invalid> - 2013-12-19 20:21 +0000
        Re: Date Conversion ? "Mel Smith" <med_cutout_syntel@aol.com> - 2013-12-20 09:52 -0700
          Re: Date Conversion ? Dr J R Stockton <reply1300@merlyn.demon.co.uk.invalid> - 2013-12-21 20:41 +0000
            Re: Date Conversion ? "Mel Smith" <med_cutout_syntel@aol.com> - 2013-12-22 09:52 -0700

csiph-web