Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.javascript > #18678
| Message-ID | <6062718.vzGJ4vAIZo@PointedEars.de> (permalink) |
|---|---|
| From | Thomas 'PointedEars' Lahn <PointedEars@web.de> |
| Organization | PointedEars Software (PES) |
| Date | 2013-03-01 12:46 +0100 |
| Subject | Re: Why is this returning NaN |
| Newsgroups | comp.lang.javascript |
| References | <kgi46g$ivc$1@dont-email.me> <kgi75q$2lf$1@dont-email.me> <kgp88e$p8o$1@speranza.aioe.org> |
J.R. wrote:
> On 26/02/2013 08:45, Jukka K. Korpela wrote:
>> 2013-02-26 12:54, Tony wrote:
>>> var diff = Math.abs(new Date() - "2013/02/26 10:24:00"); This
>>> should be perfect legal I believe.
>>
>> When you use new Date(), you get an object. And "2013/02/26
>> 10:24:00" is as such just a string. You cannot perform subtractions
>> on objects and strings.
>
> Yes, you can, because JavaScript (JS) does
… and any other conforming ECMAScript implementations do …
> an implicit coercion with objects: first JS tries .toString(), then
> valueOf() methods.
No, this (ToString()) would only happen if the operator was “+”.
> Therefore, the OP is legal
The term “legal” is very much misplaced in programming when it does not
refer to legislation (such as copyright). A programming language has a
syntax, a definition of sequences of tokens that a parser accepts. A
program is either *syntactically valid* or it is not. In addition to
syntax, source code consist of implementations of algorithms. Source code
then either makes sense (has meaning/is logical) or it does not (has not/is
not).
> because new Date() is implicitly coerced before subtracting the string.
No, it is not.
> You can test this in console:
>
> new Date() - "250" // is legal and works.
^^^^^
(There is that word again.)
But the result is _not_ NaN as it would be with
(new Date()).toString() - "250"
Instead, it is an integer Number, for example
-250
for
new Date(0) - "250"
Because both the Date instance and the primitive String value "250" are
type-converted to Number by the “-” operator:
(1) § 11.6.2:
ToNumber(new Date(0)) - ToNumber("250")
(2) §§ 9.3 and 9.3.1:
ToNumber(ToPrimitive(new Date(0), Number)) - 250
(3) § 9.1:
ToNumber([[DefaultValue]](new Date(0), Number) - 250
(4) § 8.12.8:
ToNumber(new Date(0).valueOf()) - 250
(5) § 15.9.6:
ToNumber(Date.prototype.valueOf.call(new Date(0))) - 250
(6) § 15.9.5.8:
ToNumber((new Date(0))[[time value]]) - 250
(7) § 15.9.5.8:
ToNumber(0) - 250
(8) § 9.1:
0 - 250
(9) § 11.6.2:
-250
> The OP'c code fails because converting new Date() to a string might
> produce give a different format than the string being used. […]
Nonsense.
>> Instead, use e.g.
>>
>> var now = new Date(); var other = new Date("2013/02/26 10:24:00");
>> var diff = Math.abs(now.getTime() - other.getTime());
>>
>> Better, use a suitable library to parse the date stamp or construct
>> the Date object using suitable numeric parameters. There is no
>> guarantee that all implementations will parse a notation like
>> 2013/02/26 10:24:00 (the same way).
>
> ACK.
A Sith^WWannabe cries for their Master^W^Wlibraries when they get stuck.
A Jedi^W^WThe knowledgable uses the power of the Force^Wlanguages instead:
var s = "2013/02/26 10:24:00";
var m = s.match(/^\s*(\d+)\/(\d+)\/(\d+)\s+(\d+):(\d+):(\d+)\s*$/);
var d;
if (m)
{
/*
* But see also Function.prototype.construct() in JSX:object.js
*
* --m[2];
* d = Date.construct(m.slice(1));
*/
d = new Date(m[1], m[2] - 1, m[3], m[4], m[5], m[6]);
}
--
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
Why is this returning NaN "Tony" <tony.johansson@inport.com> - 2013-02-26 11:54 +0100
Re: Why is this returning NaN Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2013-02-26 12:09 +0100
Re: Why is this returning NaN "Jukka K. Korpela" <jkorpela@cs.tut.fi> - 2013-02-26 13:45 +0200
Re: Why is this returning NaN "J.R." <groups_jr-1@yahoo.com.br> - 2013-03-01 00:45 -0300
Re: Why is this returning NaN "J.R." <groups_jr-1@yahoo.com.br> - 2013-03-01 01:13 -0300
Re: Why is this returning NaN Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2013-03-01 12:48 +0100
Re: Why is this returning NaN "Evertjan." <exxjxw.hannivoort@inter.nl.net> - 2013-03-01 10:06 +0100
Re: Why is this returning NaN Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2013-03-01 12:46 +0100
Re: Why is this returning NaN John G Harris <niam@jghnorth.org.uk.invalid> - 2013-03-01 14:19 +0000
Re: Why is this returning NaN "Joao Rodrigues (J.R.)" <groups_jr-1@yahoo.com.br> - 2013-03-01 12:01 -0300
Re: Why is this returning NaN Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2013-03-01 21:03 +0100
Re: Why is this returning NaN "Joao Rodrigues (J.R.)" <groups_jr-1@yahoo.com.br> - 2013-03-01 18:25 -0300
Re: Why is this returning NaN Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2013-03-01 22:35 +0100
Re: Why is this returning NaN Patricia Shanahan <pats@acm.org> - 2013-03-01 20:31 -0800
Re: Why is this returning NaN Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2013-03-02 12:49 +0100
Re: Why is this returning NaN "J.R." <groups_jr-1@yahoo.com.br> - 2013-03-03 12:32 -0300
Re: Why is this returning NaN "Evertjan." <exxjxw.hannivoort@inter.nl.net> - 2013-03-03 18:03 +0100
Re: Why is this returning NaN Martin Leese <please@see.Web.for.e-mail.INVALID> - 2013-03-03 10:16 -0700
OT: "javascript" was: Why is this returning NaN Christoph Becker <cmbecker69@gmx.de> - 2013-03-03 20:35 +0100
Re: OT: "javascript" was: Why is this returning NaN "Jukka K. Korpela" <jkorpela@cs.tut.fi> - 2013-03-03 21:43 +0200
Re: OT: "javascript" was: Why is this returning NaN Tim Streater <timstreater@greenbee.net> - 2013-03-03 19:45 +0000
"javascript" (was: OT: "javascript") Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2013-03-03 21:09 +0100
Re: "javascript" "J.R." <groups_jr-1@yahoo.com.br> - 2013-03-03 23:19 -0300
Re: "javascript" Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2013-03-04 11:27 +0100
Re: "javascript" Tim Streater <timstreater@greenbee.net> - 2013-03-04 13:09 +0000
Re: "javascript" Christoph Becker <cmbecker69@gmx.de> - 2013-03-10 20:50 +0100
Re: "javascript" Tim Streater <timstreater@greenbee.net> - 2013-03-10 20:29 +0000
Re: "javascript" Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2013-03-10 23:23 +0100
Re: "javascript" Tim Streater <timstreater@greenbee.net> - 2013-03-10 22:48 +0000
Re: "javascript" Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2013-03-10 23:53 +0100
Re: "javascript" Tim Streater <timstreater@greenbee.net> - 2013-03-10 23:23 +0000
Re: "javascript" Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2013-03-11 02:57 +0100
Re: "javascript" Tim Streater <timstreater@greenbee.net> - 2013-03-11 08:55 +0000
Re: "javascript" Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2013-03-11 17:38 +0100
Re: "javascript" Dr J R Stockton <reply1300@merlyn.demon.co.uk.invalid> - 2013-03-12 19:29 +0000
Re: "javascript" Andrew Poulos <ap_prog@hotmail.com> - 2013-03-13 14:36 +1100
Re: "javascript" John G Harris <niam@jghnorth.org.uk.invalid> - 2013-03-13 15:20 +0000
Re: "javascript" Andrew Poulos <ap_prog@hotmail.com> - 2013-03-14 11:18 +1100
Re: "javascript" John G Harris <niam@jghnorth.org.uk.invalid> - 2013-03-14 10:43 +0000
Re: "javascript" Andrew Poulos <ap_prog@hotmail.com> - 2013-03-15 07:02 +1100
Re: "javascript" John G Harris <niam@jghnorth.org.uk.invalid> - 2013-03-15 10:28 +0000
Re: "javascript" Andrew Poulos <ap_prog@hotmail.com> - 2013-03-16 07:17 +1100
Re: "javascript" John G Harris <niam@jghnorth.org.uk.invalid> - 2013-03-16 12:04 +0000
Re: "javascript" Andrew Poulos <ap_prog@hotmail.com> - 2013-03-17 08:17 +1100
Re: "javascript" John G Harris <niam@jghnorth.org.uk.invalid> - 2013-03-17 11:13 +0000
Re: "javascript" Andrew Poulos <ap_prog@hotmail.com> - 2013-03-17 23:15 +1100
Re: "javascript" John G Harris <niam@jghnorth.org.uk.invalid> - 2013-03-17 16:42 +0000
Re: "javascript" Andrew Poulos <ap_prog@hotmail.com> - 2013-03-18 07:47 +1100
Re: "javascript" John G Harris <niam@jghnorth.org.uk.invalid> - 2013-03-18 15:01 +0000
Re: "javascript" Andrew Poulos <ap_prog@hotmail.com> - 2013-03-19 07:34 +1100
Re: "javascript" John G Harris <niam@jghnorth.org.uk.invalid> - 2013-03-19 15:04 +0000
Re: "javascript" Andrew Poulos <ap_prog@hotmail.com> - 2013-03-20 07:40 +1100
Re: "javascript" Mike Duffy <Use.web.form@website_in_sig.com> - 2013-03-13 12:03 +0000
Re: "javascript" Dr J R Stockton <reply1300@merlyn.demon.co.uk.invalid> - 2013-03-14 21:22 +0000
Re: "javascript" Mike Duffy <Use.web.form@website_in_sig.com> - 2013-03-15 01:44 +0000
Re: "javascript" Dr J R Stockton <reply1300@merlyn.demon.co.uk.invalid> - 2013-03-16 19:42 +0000
Re: "javascript" Mike Duffy <Use.web.form@website_in_sig.com> - 2013-03-17 18:25 +0000
Re: "javascript" Tim Streater <timstreater@greenbee.net> - 2013-03-17 19:01 +0000
Re: "javascript" Gene Wirchenko <genew@telus.net> - 2013-03-15 10:55 -0700
Re: "javascript" John G Harris <niam@jghnorth.org.uk.invalid> - 2013-03-13 15:21 +0000
Re: "javascript" (was: OT: "javascript") Dr J R Stockton <reply1300@merlyn.demon.co.uk.invalid> - 2013-03-04 13:07 +0000
Re: "javascript" Christoph Becker <cmbecker69@gmx.de> - 2013-03-10 20:34 +0100
Re: "javascript" Tim Streater <timstreater@greenbee.net> - 2013-03-10 19:39 +0000
Re: OT: "javascript" was: Why is this returning NaN "J.R." <groups_jr-1@yahoo.com.br> - 2013-03-03 22:41 -0300
Re: OT: "javascript" was: Why is this returning NaN "Evertjan." <exxjxw.hannivoort@inter.nl.net> - 2013-03-04 09:57 +0100
Re: OT: "javascript" was: Why is this returning NaN Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2013-03-04 11:25 +0100
Re: OT: "javascript" was: Why is this returning NaN John G Harris <niam@jghnorth.org.uk.invalid> - 2013-03-04 14:52 +0000
Re: OT: "javascript" was: Why is this returning NaN Eric Bednarz <bednarz@fahr-zur-hoelle.org> - 2013-03-10 01:02 +0100
Re: OT: "javascript" was: Why is this returning NaN John G Harris <niam@jghnorth.org.uk.invalid> - 2013-03-10 10:52 +0000
Re: OT: "javascript" was: Why is this returning NaN Eric Bednarz <bednarz@fahr-zur-hoelle.org> - 2013-03-10 12:44 +0100
Re: OT: "javascript" was: Why is this returning NaN John G Harris <niam@jghnorth.org.uk.invalid> - 2013-03-10 17:49 +0000
Re: OT: "javascript" was: Why is this returning NaN Eric Bednarz <bednarz@fahr-zur-hoelle.org> - 2013-03-20 01:21 +0100
Re: OT: "javascript" was: Why is this returning NaN John G Harris <niam@jghnorth.org.uk.invalid> - 2013-03-20 15:25 +0000
Re: OT: "javascript" was: Why is this returning NaN Eric Bednarz <bednarz@fahr-zur-hoelle.org> - 2013-03-30 01:28 +0100
Re: Why is this returning NaN Tim Streater <timstreater@greenbee.net> - 2013-02-26 12:00 +0000
Re: Why is this returning NaN Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2013-02-26 18:07 +0100
Re: Why is this returning NaN Gregor Kofler <usenet@gregorkofler.com> - 2013-02-26 13:42 +0100
Re: Why is this returning NaN Dr J R Stockton <reply1300@merlyn.demon.co.uk.invalid> - 2013-02-27 20:43 +0000
Re: Why is this returning NaN "Evertjan." <exxjxw.hannivoort@inter.nl.net> - 2013-02-28 09:19 +0100
csiph-web