Closed
Bug 61184
Opened 24 years ago
Closed 20 years ago
(Mac-only): Date.prototype.toLocale___String() functions : GMT error
Categories
(Core :: JavaScript Engine, defect, P3)
Tracking
()
RESOLVED
WORKSFORME
Future
People
(Reporter: pschwartau, Assigned: beard)
Details
(Keywords: intl)
Attachments
(2 files)
(deleted),
patch
|
Details | Diff | Splinter Review | |
(deleted),
patch
|
Details | Diff | Splinter Review |
On my Mac, I am getting a GMT discrepancy for the date
'Sun Dec 31 16:00:00 GMT-0800 1899'
The toLocale___String() functions differ from the to____String() functions.
This does not happen on my WinNT or Linux boxes. This is causing the following
date tests to fail on the Mac:
js/tests/ecma_3/Date/15.9.5.5.js
js/tests/ecma_3/Date/15.9.5.6.js
js/tests/ecma_3/Date/15.9.5.7.js
ON THE MAC (note the 8-hour discrepancies) :
js> d = new Date('Sun Dec 31 16:00:00 GMT-0800 1899')
Sun Dec 31 16:00:00 GMT-0800 1899
js> d.toString()
Sun Dec 31 16:00:00 GMT-0800 1899
js> d.toLocaleString()
Monday January 01 00:00:00 1900
js> d.toDateString()
Sun Dec 31 1899
js> d.toLocaleDateString()
Monday January 01 1900
js> d.toTimeString()
16:00:00 GMT-0800
js> d.toLocaleTimeString()
00:00:00
COMPARE ON WINNT (no discrepancies) :
js> d = new Date('Sun Dec 31 16:00:00 GMT-0800 1899')
Sun Dec 31 16:00:00 GMT-0800 (Pacific Standard Time) 1899
js> d.toString()
Sun Dec 31 16:00:00 GMT-0800 (Pacific Standard Time) 1899
js> d.toLocaleString()
Sunday, December 31, 1899 16:00:00
js> d.toDateString()
Sun Dec 31 1899
js> d.toLocaleDateString()
Sunday, December 31, 1899
js> d.toTimeString()
16:00:00 GMT-0800 (Pacific Standard Time)
js> d.toLocaleTimeString()
16:00:00
Compare bug 45590, "Date.toGMTString() is 24 hours fast" (on the Mac).
However, I think this bug is a separate issue -
Comment 1•24 years ago
|
||
Comment 2•24 years ago
|
||
Phil - Does the above patch fix the problem?
Mike
Reporter | ||
Comment 3•24 years ago
|
||
It fixed the error I reported, but now I get these errors (on Mac):
*-* Testcase ecma_3/Date/15.9.5.5.js failed: Failure messages were:
Math.abs(Date.parse(now.toLocaleString()) - now.valueOf()) < 1000 = false
FAILED! expected: true
Date.parse(Wed Dec 31 16:00:00 GMT-0800 1969).toLocaleString()) = 28800000
FAILED! expected: 0
Date.parse(Wed Dec 31 08:00:00 GMT-0800 1969).toLocaleString()) = 0 FAILED!
expected: -28800000
Date.parse(Sun Dec 31 16:00:00 GMT-0800 1899).toLocaleString()) = -2208960000000
FAILED! expected: -2208988800000
Date.parse(Mon Jan 01 00:00:00 GMT-0800 1900).toLocaleString()) = -2208931200000
FAILED! expected: -2208960000000
Date.parse(Fri Dec 31 16:00:00 GMT-0800 1999).toLocaleString()) = 946713600000
FAILED! expected: 946684800000
Date.parse(Sat Jan 01 00:00:00 GMT-0800 2000).toLocaleString()) = 946742400000
FAILED! expected: 946713600000
Date.parse(Mon Feb 28 16:00:00 GMT-0800 2000).toLocaleString()) = 951811200000
FAILED! expected: 951782400000
Date.parse(Mon Feb 28 15:59:59 GMT-0800 2000).toLocaleString()) = 951811199000
FAILED! expected: 951782399000
Date.parse(Tue Feb 29 00:00:00 GMT-0800 2000).toLocaleString()) = 951840000000
FAILED! expected: 951811200000
Date.parse(Fri Dec 31 16:00:00 GMT-0800 2004).toLocaleString()) = 1104566400000
FAILED! expected: 1104537600000
Date.parse(Fri Dec 31 15:59:59 GMT-0800 2004).toLocaleString()) = 1104566399000
FAILED! expected: 1104537599000
Date.parse(Sat Jan 01 00:00:00 GMT-0800 2005).toLocaleString()) = 1104595200000
FAILED! expected: 1104566400000
*-* Testcase ecma_3/Date/15.9.5.6.js failed: Failure messages were:
(Date.parse(now.toLocaleDateString()) - (midnight(now)).valueOf()) == 0 = false
FAILED! expected: true
Date.parse(Wed Dec 31 16:00:00 GMT-0800 1969).toLocaleDateString()) = 28800000
FAILED! expected: -57600000
Date.parse(Sun Dec 31 16:00:00 GMT-0800 1899).toLocaleDateString()) =
-2208960000000 FAILED! expected: -2209046400000
Date.parse(Fri Dec 31 16:00:00 GMT-0800 1999).toLocaleDateString()) =
946713600000 FAILED! expected: 946627200000
Date.parse(Mon Feb 28 16:00:00 GMT-0800 2000).toLocaleDateString()) =
951811200000 FAILED! expected: 951724800000
Date.parse(Fri Dec 31 16:00:00 GMT-0800 2004).toLocaleDateString()) =
1104566400000 FAILED! expected: 1104480000000
*-* Testcase ecma_3/Date/15.9.5.7.js failed: Failure messages were:
(Wed Dec 31 16:00:00 GMT-0800 1969).toLocaleTimeString() = 00:00:00
FAILED! expected: 16:00:00
(Wed Dec 31 08:00:00 GMT-0800 1969).toLocaleTimeString() = 16:00:00
FAILED! expected: 08:00:00
(Sun Dec 31 16:00:00 GMT-0800 1899).toLocaleTimeString() = 00:00:00
FAILED! expected: 16:00:00
(Mon Jan 01 00:00:00 GMT-0800 1900).toLocaleTimeString() = 08:00:00
FAILED! expected: 00:00:00
(Fri Dec 31 16:00:00 GMT-0800 1999).toLocaleTimeString() = 00:00:00
FAILED! expected: 16:00:00
(Sat Jan 01 00:00:00 GMT-0800 2000).toLocaleTimeString() = 08:00:00
FAILED! expected: 00:00:00
(Mon Feb 28 16:00:00 GMT-0800 2000).toLocaleTimeString() = 00:00:00
FAILED! expected: 16:00:00
(Mon Feb 28 15:59:59 GMT-0800 2000).toLocaleTimeString() = 23:59:59
FAILED! expected: 15:59:59
(Tue Feb 29 00:00:00 GMT-0800 2000).toLocaleTimeString() = 08:00:00
FAILED! expected: 00:00:00
(Wed Nov 29 20:30:25 GMT-0800 2000).toLocaleTimeString() = 04:30:25
FAILED! expected: 20:30:25
(Thu Nov 30 04:30:25 GMT-0800 2000).toLocaleTimeString() = 12:30:25
FAILED! expected: 04:30:25
(Fri Dec 31 16:00:00 GMT-0800 2004).toLocaleTimeString() = 00:00:00
FAILED! expected: 16:00:00
(Fri Dec 31 15:59:59 GMT-0800 2004).toLocaleTimeString() = 23:59:59
FAILED! expected: 15:59:59
(Sat Jan 01 00:00:00 GMT-0800 2005).toLocaleTimeString() = 08:00:00
FAILED! expected: 00:00:00
Reporter | ||
Comment 4•24 years ago
|
||
I'm sorry, I see that "Sun Dec 31 16:00:00 GMT-0800 1899" date in the new
errors, too. It looks like the patch has not corrected the problem with
the reported date; plus now we're getting problems with all the other dates...
Reporter | ||
Comment 5•24 years ago
|
||
If I revert jsdate.c back to the way it originally was, here are the results:
*-* Testcase ecma_3/Date/15.9.5.5.js failed: Failure messages were:
Date.parse(Sun Dec 31 16:00:00 GMT-0800 1899).toLocaleString()) = -2208960000000
FAILED! expected: -2208988800000
*-* Testcase ecma_3/Date/15.9.5.6.js failed: Failure messages were:
Date.parse(Sun Dec 31 16:00:00 GMT-0800 1899).toLocaleDateString()) =
-2208960000000 FAILED! expected: -2209046400000
*-* Testcase ecma_3/Date/15.9.5.7.js failed: Failure messages were:
(Sun Dec 31 16:00:00 GMT-0800 1899).toLocaleTimeString() = 00:00:00
FAILED! expected: 16:00:00
Comment 6•24 years ago
|
||
Quick note...
The output of any of the Date.prototype.toLocale functions aren't guaranteed to
be parsable, and might vary from OS to OS. (But it looks like you're getting
good results on some OSes.)
Comment 7•24 years ago
|
||
The failure dates on the Mac are before 1900, outside the Mac 1904->? domain.
Mapping earlier dates to equivalent dates in the 1970-20?? range (mac- and
32-bit-unix- conservative) before asking the OS for info might fix it.
Comment 8•24 years ago
|
||
Comment 9•24 years ago
|
||
Hey, I wonder if Beard's rework of the Mac aspects of prmjtime.c fixed this.
Phil, could you check?
Thanks -
Mike
Reporter | ||
Comment 10•24 years ago
|
||
No, I'm still getting the same Mac results as in the original report -
Reporter | ||
Comment 11•24 years ago
|
||
Reassigning Mike's JS Engine bugs to Patrick, as per recent meeting -
Assignee: mike+mozilla → beard
Reporter | ||
Updated•22 years ago
|
Summary: Date.prototype.toLocale___String() functions : GMT error → (Mac-only): Date.prototype.toLocale___String() functions : GMT error
Comment 13•21 years ago
|
||
This bug is targeted at a Mac classic platform/OS, which is no longer supported
by mozilla.org. Please re-target it to another platform/OS if this bug applies
there as well or resolve this bug.
I will resolve this bug as WONTFIX in four weeks if no action has been taken.
To filter this and similar messages out, please filter for "mac_cla_reorg".
Comment 14•20 years ago
|
||
WFM Moz OSX.
Mac CFM RIP.
Status: NEW → RESOLVED
Closed: 20 years ago
Resolution: --- → WORKSFORME
You need to log in
before you can comment on or make changes to this bug.
Description
•