Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.javascript > #22365
| 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
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