|
CodingForums
Having trouble with scripting? Visit our help forum to get the answers you need.
This is a 
|
 |
Y2K and your date scripts
While this tutorial may no longer be relevant in today's time, it's still
useful to understand the problem and solution that once plagued JavaScript
in certain browsers that is the Y2K bug. A pre millennium survey revealed
that over 50% of people secretly hoped for a small disaster to occur on
Millennium day (hmmmm). Well, to the disappointment of billions, then, Y2K
came without a hitch, and life went on as usual- for the most part, that is.
Around the world, minor glitches were reported, and among them, a
JavaScript-related one. Apparently, a good number of legacy Netscape
browsers contain a Y2K bug that causes dates rendered by JavaScript to be
displayed incorrectly after the cross over. The bug also plagued Internet
Explorer, though only in older versions (IE 2).
Here's the problem.
Date.getYear(), JavaScript's method to retrieve the year, is
defective in certain browsers, and resets
to "100" on year 2000. Calling it now (year 2000) returns 100", year 2001
returns "101", and so on. This problematic behavior with Date.getYear() is
manifested in the following browsers:
-NS 2
-NS 4.x
-IE 2
The solution
Done with the problem, now onto
the solution. To have JavaScript accurately write out the correct year
starting in Y2K, simply conditionally add 1900 to
Date.getYear(). The condition to test
for is whether the year is less than 1000. So, with that in mind, here's the
fixed code:
var year=mydate.getYear()
//Y2K bug fix
if (year < 1000)
year+=1900
Variable "year" will now always contain the correct 4 digit year, regardless
of which browser runs it.
Check the
source of some of our
Date scripts,
and you'll notice the above snippet in most of them. Now you know why
they're there.
|