Class of software bugs
In
computer science
,
data type
limitations and
software bugs
can cause errors in
time and date
calculation or display. These are most commonly manifestations of
arithmetic overflow
, but can also be the result of other issues. The most well-known consequence of this type is the
Y2K problem
, but many other milestone dates or times exist that have caused or will cause problems depending on various programming deficiencies.
Year 1975
[
edit
]
On 4 January 1975, the 12-bit field that had been used for dates in the
DECsystem-10
operating systems overflowed. There were numerous problems and crashes related to this bug while an alternative format was developed.
[1]
Year 1978
[
edit
]
The Digital Equipment Corporation
OS/8
operating system for the
PDP-8
computer used only three bits for the year, representing the years 1970 to 1977.
[2]
This was recognized when the
COS-310
operating system was developed, and dates were recorded differently.
[3]
Year 1993
[
edit
]
Multiple
Sierra Entertainment
games released for the
Classic Mac OS
started to
freeze
when running on 18 September 1993. An issue in the Mac version of
Sierra's Creative Interpreter
(Mac SCI) would cause the game to "lock-up" when attempting to handle a delay due to a problem involving an overflow. Mac SCI would attempt to use the date to determine how long a delay should last by getting the current time in seconds since 1 January 1904, the
Macintosh epoch
, and dividing by 12 hours. The division was processed by the
Motorola 68000
and would not occur if an overflow was detected because of the division, but the Mac SCI would continue on regardless as if the division had occurred, eventually resulting in a delay of one second being treated as a delay for 18 hours and so on. Sierra released a patch called MCDATE that resolved the problem for
almost 14 years
.
[4]
[5]
Year 1997
[
edit
]
The
Domain/OS
clock, which is based on the number of 4-microsecond units that has occurred since 1 January 1980, rolled past 47 bits on 2 November 1997, rendering unpatched systems unusable.
[6]
Year 1999
[
edit
]
In the last few months before the year 2000, two other date-related milestones occurred that received less publicity than the then-impending Y2K problem.
First GPS rollover
[
edit
]
GPS dates are expressed as a week number and a day-of-week number, with the week number transmitted as a ten-
bit
value. This means that every 1,024 weeks (about 19.6 years) after Sunday 6 January 1980, (the GPS
epoch
), the date resets again to that date; this happened for the first time at 23:59:47 on 21 August 1999,
[7]
the second time at 23:59:42
UTC
on 6 April 2019, and will happen again on 20 November 2038.
[8]
To address this concern, modernised GPS navigation messages use a 13-bit field, which only repeats every 8,192 weeks (157 years), and will not return to zero until the year 2137.
[9]
9/9/99
[
edit
]
In many programs or data sets, "9/9/99" was used as a
rogue value
to indicate either an unresolved date or as a terminator to indicate no further data was in the set. This raised issues upon the arrival of the actual date this represents, 9 September 1999.
[7]
Year 2000
[
edit
]
Two-digit year representations
[
edit
]
Follow-on problems caused by certain temporary fixes to the Y2K problem will crop up at various points in the 21st century. Some programs were made Y2K-compliant by continuing to use two digit years, but picking an arbitrary year prior to which those years are interpreted as 20
xx
, and after which are interpreted as 19
xx
.
[10]
For example, a program may have been changed so that it treats two-digit year values 00?68 as referring to 2000 through 2068, and values 69?99 as referring to 1969 through 1999.
[11]
Such a program will not be able to correctly deal with years beyond 2068.
For applications required to calculate the birth year (or another past year), such an algorithm has long been used to overcome the
Year 1900 problem
, but it has failed to recognise
people over 100 years old
.
Year 2001
[
edit
]
Systems that used a string of nine digits to record the time as seconds since the
Unix epoch
had issues reporting times beyond the one-billionth second after the epoch on 9 September 2001 at 01:46:40 (the "billenium"). Problems were not widespread.
[12]
Year 2007
[
edit
]
Sierra Entertainment games for the Classic Mac OS that were patched with the MCDATE program or released afterwards with the patch built in would begin to freeze on 28 May 2007. As with the
Year 1993
problem, this was due to an issue in the Mac SCI when attempting to use the date to determine how long a delay should last. Programs with the MCDATE patch freeze because the Mac SCI takes the current number of seconds since the
Macintosh epoch
of 1 January 1904, subtracts 432,000,000 seconds from that, and then divides by 12 hours through the Motorola 68000, to then determine how long delays should last. On 28 May 2007, the Motorola 68000 again does not divide due to overflow protection, which the Mac SCI ignores.
[4]
Year 2010
[
edit
]
Some systems had problems once the year rolled over to 2010. This was dubbed by some in the media as the "Y2K+10" or "Y2.01k" problem.
[13]
The main source of problems was confusion between hexadecimal number encoding and
BCD
encodings of numbers. The numbers 0 through 9 are encoded in both hexadecimal and BCD as 00
16
through 09
16
. But the decimal number 10 is encoded in hexadecimal as 0A
16
and in BCD as 10
16
. Thus a BCD 10
16
interpreted as a hexadecimal encoding erroneously represents the decimal number 16.
For example, the
SMS
protocol uses BCD encoding for dates, so some mobile phone software incorrectly reported dates of messages as 2016 instead of 2010.
Windows Mobile
was the first software reported to have been affected by this glitch; in some cases WM6 changed the date of any incoming SMS message sent after 1 January 2010, from the year 2010 to 2016.
[14]
[15]
Other systems affected include
EFTPOS
terminals,
[16]
and the
PlayStation 3
(except the Slim model).
[17]
Sony's
PlayStation 3
incorrectly treated 2010 as a
leap year
, so the non-existent 29 February 2010, was shown on 1 March 2010, causing a
program error
.
[18]
The most important such glitch occurred in Germany, where upwards of 20 million bank cards became unusable, and with Citibank Belgium, whose digipass customer identification chips stopped working.
[19]
Year 2011
[
edit
]
Taiwan
officially uses the
Minguo calendar
, which considers the
Gregorian
year 1912 to be its year 1. Thus, the Gregorian year 2011 is the ROC year 100, its first 3-digit year.
[20]
Year 2013
[
edit
]
The
Deep Impact
space probe lost communication with Earth on 11 August 2013, because of a time-tagging problem; the date was stored as an unsigned 32-bit integer counting the number of tenth-seconds since 1 January 2000.
[21]
Year 2019
[
edit
]
Second GPS rollover
[
edit
]
In 2019, the
second GPS week number rollover
occurred.
Japanese calendar transition
[
edit
]
On 30 April 2019, Emperor
Akihito
of Japan
abdicated
in favor of his son
Naruhito
. As years in Japan are traditionally referred to by
era names
that correspond to the reign of each emperor, this resulted in a new era name,
Reiwa
(
令和
)
, following Naruhito's accession to the throne the following day. Because the previous emperor,
Hirohito
, died 7 January 1989, and Akihito's reign mostly corresponded with the rise in the use of computers, most software had not been tested to ensure correct behavior on an era change, while testing was further complicated by the fact that the new era name was not revealed until 1 April 2019. Therefore, errors were expected from software that did not anticipate a new era.
Year 2020
[
edit
]
The video games
WWE 2K20
and
Star Wars Jedi: Fallen Order
both
crashed
on 1 January 2020, when the year rolled over. The glitches could only be circumvented by resetting the year back to 2019 until a patch was released.
[22]
[23]
Additionally,
Crystal Reports 8.5
would fail to generate specific reports starting in 2020.
[24]
Parkeon
parking meters in New York City and other locations were unable to accept credit cards as a form of payment starting in 2020. A workaround was implemented, but required each meter to be individually updated. In New York, the meters were not expected to be fixed until 9 January.
[25]
[26]
In Poland, 5,000
cash registers
stopped printing the date out properly.
[27]
Suunto
sport smart watches displayed an error in computing weekdays that were presented with a +2 step (e.g. FRI rather than WED, SAT rather than THU). For Suunto Spartan model watches, the bug was fixed with firmware release 2.8.32.
[28]
Classic Mac OS
[
edit
]
The control panel in Classic Mac OS versions 6, 7, and 8 only allows the date to be set as high as 31 December 2019, although the system is able to continue to advance time beyond that date.
[29]
[30]
Microsoft Schedule+
[
edit
]
The first version of
Microsoft Schedule+
as bundled with version 3.0 of the Microsoft Mail email client will refuse to work with years greater than 2020 or beyond, due to the fact that the program was designed to operate within a 100-year time window ranging from 1920 to 2019. As a result, the date can only be set as high as 31 December 2019.
[31]
Year 2021
[
edit
]
Samsung users reported that phones running on the latest
One UI 3.0 update
or
Android 11
lost access to the battery and charging statistics starting in 2021. Affected devices would not report usage statistics, thus leaving those sections blank.
[32]
[33]
Year 2022
[
edit
]
Dates that are stored in the format yymmddHHMM converted to a signed 32-bit integer overflowed on 1 January 2022, as 2
31
=2147483648. Notably affected was the malware-scanning component update numbers of
Microsoft Exchange
, which appear to be used for a mathematical check to determine the latest update.
[34]
[35]
Honda
and
Acura
cars manufactured between 2004 and 2012 containing
GPS navigation
systems incorrectly displayed the year as 2002. This problem was due to an overflow on the GPS epoch.
[36]
[37]
The issue was resolved on August 17, 2022.
[38]
Year 2024
[
edit
]
Payment card readers at petrol pumps in New Zealand were
unable to handle the leap year
and were unable to properly dispense gasoline.
[39]
Video games
EA Sports WRC
and
Theatrhythm Final Bar Line
also suffered issues related to the leap year, with the former crashing when trying to load the game and the latter claiming that the save data was corrupted. Both games had to be set to the following day of March 1, 2024 to properly work.
[40]
[41]
[42]
Year 2025
[
edit
]
In Japan, some older computer systems using the Japanese calendar that have not been updated still count years according to the
Sh?wa era
. The year 2025 corresponds in those systems to Sh?wa 100, which can cause problems if the software assumes two digits for the year.
[43]
Year 2028
[
edit
]
Some systems store their year as a single-byte offset from 1900, which gives a range of 255 (8 bits) and allows dates up to 2155 to be safely represented. However, not all systems use an
unsigned
byte: some have been mistakenly coded with a signed byte which only allows a range of 127 years, meaning that the date field in the software will be incorrect after 2027 and can cause unpredictable behaviour. Several pieces of optical-disc software that operate using the
ISO 9660
format are affected by this.
[44]
During the late 1970s, on Data General Nova and Eclipse systems, the World Computer Corporation (doing credit union applications) created a date format with a 16-bit date field for 128 years (7 bits ? note 1900+128=2028), 12 months (4 bits) and 31 days (5 bits). This allowed dates to be directly comparable using unsigned functions. Some systems, including
HP 3000
, still use this format, although a patch has been developed by outside consultants.
[45]
Year 2032
[
edit
]
Palm OS
uses both
signed
integers with the 1970
epoch
, as well as unsigned integers with the 1904 epoch, for different system functions,
[46]
such as for system clock, and file dates (see
PDB format
). While this should result in Palm OS being susceptible to the
2038 problem
, Palm OS also uses a 7-bit field for storing the year value, with a different epoch counting from 1904, resulting in a maximum year of 2031 (1904+127).
[47]
Year 2036
[
edit
]
The Network Time Protocol has an overflow issue related to the
Year 2038 problem
, which manifests itself at 06:28:16 UTC on 7 February 2036, rather than 2038. The 64-bit timestamps used by NTP consist of a 32-bit part for seconds and a 32-bit part for fractional second, giving NTP a time scale that rolls over every 2
32
seconds (136 years) and a theoretical resolution of 2
?32
second (233 picoseconds). NTP uses an epoch of 1 January 1900. The first rollover occurs in 2036, prior to the UNIX year 2038 problem.
[48]
[49]
Year 2038
[
edit
]
Unix time rollover
[
edit
]
The original implementation of the
Unix
operating system stored system time as a
32-bit signed integer
representing the number of seconds past the
Unix epoch
: midnight UTC 00:00:00 on Thursday, 1 January 1970. This value will roll over after 03:14:07 UTC on Tuesday, 19 January 2038. This problem has been addressed in most modern Unix and
Unix-like
operating systems by storing system time as a 64-bit signed integer, although individual applications, protocols, and file formats must be changed as well.
Windows C runtime library
[
edit
]
Like the Unix time rollover issue, the 32-bit version of gmtime in the C runtime libraries on Windows has a similar problem.
[50]
This problem has already manifested in
Oracle's
Access Manager version 10.1.4.3 for Windows. The Identity Console component sets a cookie containing
UI
preferences with an expiry of 500,000,000 seconds in the future (about 16 years). This is beyond 19 January 2038 and so it throws an
exception
for certain search activities after 02:20:48 UTC on 17 March 2022 because the gmtime_r() call cannot convert the number provided to a date to write to the cookie.
[51]
Despite the age of the software (18 June 2009), Oracle issued a patch number 33983548 on 6 April 2022.
Third GPS rollover
[
edit
]
The third
GPS week number rollover
will occur at 20 November 2038, at 23:59:37 UTC.
Year 2040
[
edit
]
Early Apple
Macintosh
computers store time in their
real-time clocks
(RTCs) and
HFS
filesystems as an unsigned 32-bit number of seconds since 00:00:00 on 1 January 1904. After 06:28:15 on 6 February 2040, (i.e. 2
32
−1 seconds from the epoch), this will wrap around to 1904:
[52]
further to this,
HFS+
, the default format for all of Apple's recent Macintosh computers, is also affected. The replacement
Apple File System
resolves this issue.
ProDOS for the
Apple II
computers only supports two-digit year numbers. To avoid Y2K issues, Apple issued a technical note stating that the year number was to represent 1940?2039.
[53]
Software for the platform may incorrectly display dates beginning in 2040, though a third-party effort is underway to update ProDOS and application software to support years up to 4095.
[54]
Year 2042
[
edit
]
On 18 September 2042, the Time of Day Clock (TODC) on the S/370
IBM mainframe
and its successors, including the current zSeries, will roll over.
[55]
Older TODCs were implemented as a 64-bit count of 2
?12
microsecond (0.244 ns) units, and the standard base was 1 January 1900,
UT
. In July 1999 the extended TODC clock was announced, which extended the clock to the right (that is, the extended bits are less significant than the original bits). The actual resolution depends on the model, but the format is consistent, and will, therefore, roll over after 2
52
microseconds.
[55]
The TODC value is accessible to user mode programs and is often used for timing and for generating unique IDs for events.
While IBM has defined and implemented a longer (128-bit) hardware format on recent machines, which extends the timer on both ends by at least 8 additional bits, many programs continue to rely on the 64-bit format which remains as an accessible subset of the longer timer.
Year 2048
[
edit
]
The capacity planning logic in the ERP system
SAP S/4HANA
supports only finish dates up to 19 January 2048, (24,855 days from 1 January 1980). This concerns e.g. the production, maintenance and inspection planning.
[56]
Year 2069
[
edit
]
According to the
Single UNIX Specification
for parsing two-digit years using
strptime()
, "values in the range [69,99] shall refer to years 1969 to 1999 inclusive and values in the range [00,68] shall refer to years 2000 to 2068 inclusive",
[57]
meaning that, when parsed by
strptime()
, the two-digit year "69" would be interpreted as 1969 rather than 2069.
Year 2079
[
edit
]
Days 32,768 and 65,536
[
edit
]
Programs that store dates as the number of days since an arbitrary date (or
epoch
) are vulnerable to roll-over or wrap-around effects if the values are not wide enough to allow the date values to span a large enough time range expected for the application. Signed 16-bit binary values roll over after 32,768 (2
15
) days from the epoch date, producing negative values. Some mainframe systems experienced software failures because they had encoded dates as the number of days since 1 January 1900, which produced unexpected negative day numbers on the roll-over date of 18 September 1989. Similarly, unsigned 16-bit binary days counts
overflow
after 65,536 (2
16
) days, which are truncated to zero values. For software using an epoch of 1 January 1900, this will occur on 6 June 2079.
[58]
Year 2080
[
edit
]
Some (if not all) Nokia phones that run
Series 40
(such as the
Nokia X2-00
) only support dates up to 31 December 2079, and thus will be unable to display dates after this. One workaround is to use the year 1996, 2024 or 2052 in lieu of 2080 (as compatible leap years) to display the correct day of the week, date and month on the main screen.
[
citation needed
]
Systems storing the year as a two-digit value 00..99 internally only, like many RTCs, may roll over from 31 December 2079, to the IBM PC and DOS
epoch of 1980-01-01
.
Year 2100
[
edit
]
DOS
and
Windows
file date
API
and conversion functions (such as
INT 21h
/AH=2Ah) officially support dates up to 31 December 2099, only (even though the underlying
FAT filesystem
would theoretically support dates up to 2107). Hence, DOS-based operating systems, as well as applications that convert other formats to the FAT/DOS format, may show unexpected behavior starting 1 January 2100.
Another problem will emerge at the end of 28 February 2100, since 2100 is not a
leap year
. As many common implementations of the leap year algorithm are incomplete or are simplified, they may erroneously assume 2100 to be a leap year, causing the date to roll over from 28 February 2100 to 29 February 2100, instead of 1 March 2100.
The Nintendo DS and GameCube, as well as the Sony PlayStation 4, only allow users to set dates up to the year 2099. In the case of the Nintendo DS, the system will not advance time beyond 31 December 2099, whereas the GameCube and PS4 will still roll over into 2100 and beyond, even though users of those game consoles cannot manually input the date and time that far out.
Year 2106
[
edit
]
Many existing file formats, communications protocols, and application interfaces employ a variant of the
Unix
time_t
date format, storing the number of seconds since the Unix Epoch (midnight UTC, 1 January 1970) as an
unsigned
32-bit binary integer. This value will roll over on 7 February 2106 at 06:28:15. That is, at this time the number of seconds since 1 January 1970 is FFFF FFFF in hex.
This storage representation problem is independent of programs that internally store and operate on system times as 64-bit signed integer values.
Year 2108
[
edit
]
The date timestamps stored in
FAT filesystems
, originally introduced with
86-DOS 0.42
in 25 February 1981 and carried over into
MS-DOS
,
PC DOS
,
DR-DOS
etc., will overflow at the end of 31 December 2107. The
last modification date stamp
(and with
DELWATCH
2.0+ also the
file deletion date stamp
, and since
DOS 7.0
+ optionally also the
last access date stamp
and
creation date stamp
), are stored in the
directory entry
with the year represented as an unsigned seven bit number (0?127), relative to 1980, and thereby unable to indicate any dates in the year 2108 and beyond. The
API functions
defined to retrieve these dates officially only support dates up to 31 December 2099.
This will also affect the
ZIP archive file format
, as it uses FAT file modification timestamps internally.
Year 2137
[
edit
]
GPS dates are expressed as a week number and a day-of-week number, with the week number initially using a ten-
bit
value and modernised GPS navigation messages using a 13-bit field. Ten-bit systems would roll over every 1024 weeks (about 19.6 years) after Sunday 6 January 1980 (the GPS
epoch
), and 13-bit systems roll over every 8192 weeks. Thirteen-bit systems will roll over to zero in 2137.
[7]
[8]
Year 2248
[
edit
]
RISC OS
stores dates as centiseconds since the start of Monday 1st January 1900 in five bytes ? 40 bits. These timestamps are used internally and exposed in file metadata (load and exec addresses). This
epoch
ends on 3rd June 2248 at 06:57:57.75 UTC.
[59]
Year 2262
[
edit
]
Some timekeeping systems count
nanoseconds
since 1970 using a 64-bit signed integer, which will overflow at 11 April 2262, 23:47:16. The
Go programming language's
UnixNano
API is one example.
[60]
Other examples include the Timestamp object in Python
pandas
,
[61]
C++
chrono::nanoseconds,
[62]
and the
QEMU
timers.
[63]
Year 2286
[
edit
]
Systems that use a string of length 10 characters to record the
Unix time
may have problems reporting times beyond the ten-billionth second after 20 November 2286, at 17:46:40.
Year 2446
[
edit
]
In
ext4
, the default file system for many Linux distributions, the bottom two bits of
{a,c,m}time_extra
are used to extend the
{a,c,m}time
fields, deferring the year 2038 problem to the year 2446.
[64]
Within this "extra" 32-bit field, the lower two bits are used to extend the 32-bit seconds field to be 34 bit wide; the upper 30 bits are used to provide nanosecond timestamp accuracy. Therefore, timestamps should not overflow until May 2446.
[65]
Years 4000, 8000, etc.
[
edit
]
On time scales of thousands of years, the Gregorian calendar falls behind the astronomical seasons. This is because
the Earth's speed of rotation is gradually slowing down
, which makes each day slightly longer over time (see
tidal acceleration
and
leap second
) while the year maintains a more uniform duration.
In the 19th century, Sir
John Herschel
proposed a modification to the Gregorian calendar with 969 leap days every 4000 years, instead of 970 leap days that the Gregorian calendar would insert over the same period.
[66]
This would reduce the average year to 365.24225 days. Herschel's proposal would make the year 4000, and multiples thereof, common instead of leap. While this modification has often been proposed since, it has never been officially adopted.
[67]
While most software (including
Excel
,
JavaScript
and
R
) currently recognizes 4000 and 8000 as leap years (as they are divisible by 400),
SAS
has adopted the "4000 year rule". Thus, with the current software, date conversions between SAS and other software will go out of sync after 28 February 4000.
[68]
[69]
Year 4501
[
edit
]
Microsoft Outlook
uses the date 1 January 4501 as a placeholder for "none" or "empty".
[70]
[71]
Year 10,000
[
edit
]
The year 10,000 will be the first Gregorian year with five digits. All future years that are powers of 10, as well as dates before the
10th millennium BC
, face similar encoding problems.
Examples
[
edit
]
This problem can be seen in the spreadsheet program
Microsoft Excel
as of 2023, which stores dates as the number of days since 31 December 1899 (day 1 is 1 January 1900) with a
fictional leap day in 1900
if using the default 1900 date system. Alternatively, if using the 1904 date system, the date is stored as the number of days since 1 January 1904 (day 1 is 2 January 1904), and there is no leap year problem. The maximum supported date for calculation is 31 December 9999.
[72]
[73]
Year 30,828
[
edit
]
Beginning 14 September 30,828, Windows will not accept dates beyond this day and on startup, it will display an error regarding "invalid system time" in NTFS. This is because the FILETIME value in Windows, which is a 64-bit value corresponding to the number of 100-nanosecond intervals since 1 January 1601, 00:00:00.0000000 UTC, will
overflow
its maximum possible value on that day at 02:48:05.4775808 UTC.
[74]
Years 32,768 and 65,536
[
edit
]
Programs that process years as 16-bit values may encounter problems dealing with either the year 32,768 or 65,536, depending on whether the value is treated as a signed or unsigned integer.
For the
year 32,768 problem
, years after 32,767 may be interpreted as negative numbers, beginning with ?32,768.
[75]
The
year 65,536 problem
is more likely to manifest itself by representing the year 65,536 as the year 0.
[76]
Year 100,000
[
edit
]
The year 100,000 will be the first Gregorian year with six digits.
Year 275,760
[
edit
]
JavaScript
's Date API stores dates as the number of milliseconds since 1 January 1970. Dates have a range of ±100,000,000 days from the epoch, meaning that programs written in JavaScript using the Date API cannot store dates past 13 September, AD 275,760.
[77]
Year 292,277,026,596
[
edit
]
Certain problematic years occur
so far in the future
(well beyond the likely lifespan of the
Earth
, the
Sun
, humanity, and even past some predictions of the
lifetime of the universe
) that they are mainly referenced as matters of theoretical interest, jokes, or indications that a related problem is not truly solved for any reasonable definition of "solved".
The
year 292,277,026,596 problem
(about
2.9
×
10
11
years in the future) will occur when the 64-bit
Unix time
overflows after 15:30:08 UTC on Sunday, 4 December, AD 292,277,026,596.
[78]
[79]
Relative time overflow
[
edit
]
Microsoft
[
edit
]
In Microsoft Windows 7, Windows Server 2003, Windows Server 2008 and Windows Vista, TCP connection start information was stored in hundredths of a second, using a 32-bit unsigned integer, causing an overflow and TCP connections to fail after 497 days.
[80]
Microsoft Windows 95 and Windows 98 had a problem with 2^32 millisecond rollover in a virtual device driver (VTDAPI.VXD), which caused systems to hang after 49.7 days.
[81]
.NET
up to version 6.0 had a bug that caused threadpool hill-climbing to fail periodically after 49.7 days due to an overflow while handling the milliseconds since startup.
[82]
Boeing
[
edit
]
The
Boeing 787
aircraft has had at least two software issues related to time storage. In 2015, an error was reported where time was stored in hundredths of a second, using a signed 32-bit integer, and the systems would crash after 248 days.
[83]
In 2020, the
FAA
issued an airworthiness directive for a problem where, if the aircraft is not powered down completely before reaching 51 days of uptime, systems will begin to display misleading data.
[84]
Arduino
[
edit
]
The
Arduino
platform provides a relative time via the millis() function. This function returns an unsigned 32 bit value for "milliseconds since startup", which is designed to roll over every 49.71 days. By default, this is the only timing source available in the platform and programs need to take special care to handle rollovers.
[85]
Internally, millis() is based on counting timer interrupts. Certain powersave modes disable interrupts and therefore stop the counter from advancing during sleep.
[86]
Historic year problems
[
edit
]
Also for historic years there might be problems when handling historic events, for example:
See also
[
edit
]
References
[
edit
]
- ^
Austein, Rob (2 February 1987).
"DATE-86, or The Ghost of Tinkles Past"
.
The RISKS Digest
.
4
(45). ACM Committee on Computers and Public Policy
. Retrieved
29 December
2014
.
- ^
"Directory of linctape-images/os8l/ps-8-system-25.linc"
.
OS/8 can only store dates for an 8 year period...
- ^
"The Digital Equipment Corporation PDP-8 : Frequently Asked Questions"
.
COS-310, DEC's commercial operating system for the PDP-8 ... file system is almost the same as OS/8, but dates are recorded differently
- ^
a
b
"News Notes"
.
InterAction Magazine
. Vol. VI, no. 3.
Sierra Entertainment
. 1993. p. 12.
- ^
"Sierra's Macintosh Timebomb"
.
www.benshoof.org
. Retrieved
9 March
2023
.
- ^
"Latest News on the Date Bug"
.
- ^
a
b
c
Janis L. Gogan (9 August 1999).
"Applications to the Nines"
.
InformationWeek
. Archived from
the original
on 3 October 2008
. Retrieved
21 January
2008
.
- ^
a
b
"GPS week roll over April 6th"
.
cyber.gov.au
. Archived from
the original
on 20 October 2019
. Retrieved
10 June
2019
.
- ^
"GPS Week Number Rollover - April 2019"
.
GPS.gov
. National Coordination Office for Space-Based Positioning, Navigation, and Timing. 6 April 2019
. Retrieved
25 February
2023
.
- ^
Roger Deschner (21 December 2001).
"Identifying and Correcting Dates with Two-Digit Years"
. University of Illinois at Chicago. Archived from
the original
on 15 February 2002
. Retrieved
19 January
2010
.
See "Example 1: 100 Year Fixed Window, 1973 to 2072"
- ^
date ? write the date and time
,
The Open Group
Base Specifications Issue 6. IEEE Std 1003.1, 2004 Edition
- ^
Manjoo, Farhad.
"Unix Tick Tocks to a Billion"
.
Wired
. Retrieved
29 March
2022
.
- ^
"Bank of Queensland hit by "Y2.01k" glitch"
. 4 January 2010
. Retrieved
25 February
2023
.
- ^
Fried, Ina (5 January 2010).
"Windows Mobile glitch dates 2010 texts 2016"
.
CNET
. Retrieved
24 February
2023
.
- ^
"Windows Mobile phones suffer Y2K+10 bug"
. 4 January 2010. Archived from
the original
on 23 October 2013
. Retrieved
3 July
2013
.
- ^
"Bank of Queensland vs Y2K ? an update"
. 4 January 2010. Archived from
the original
on 8 January 2010
. Retrieved
3 July
2013
.
- ^
Loftus, Jack (28 February 2010).
"Error: 8001050F Takes Down PlayStation Network"
.
Gizmodo
.
- ^
Metrowebukmetro (2 March 2010).
"Sony fixes PS3 'leap year' bug"
.
Metro
. Retrieved
25 October
2022
.
- ^
"Bug de l'an 2010 en Allemagne: plus de 20 millions de cartes bancaires inutilisables"
[2010 Bug in Germany: more than 20 million unusable bank cards].
RTL Belgium
(in French). 5 January 2010
. Retrieved
25 February
2023
.
- ^
"Taiwan's Y1C problem"
.
Pinyin News
. 2 January 2006.
- ^
"NASA's Deep Space Comet Hunter Mission Comes to an End"
. Jet Propulsion Laboratory. 20 September 2013.
Archived
from the original on 14 October 2013
. Retrieved
9 July
2022
.
- ^
Mansoor, Saqib (1 January 2020).
"WWE 2K20 Refuses To Run In 2020"
.
SegmentNext
. Retrieved
1 January
2020
.
- ^
"Star Wars Jedi: Fallen Order and WWE 2K20 are not launching due to a "2020" bug [UPDATE]"
.
DSOGaming
. 1 January 2020
. Retrieved
19 November
2020
.
- ^
"sql ? ODBC Connection / Crystal Reports"
.
Stack Overflow
. Retrieved
19 November
2020
.
- ^
"Parking Meters Across NYC Not Accepting Credit Cards, Were Never Programmed To Work In 2020"
. 2 January 2020
. Retrieved
19 November
2020
.
- ^
"Y2K20 Parking Meter Software Glitch Causes Citywide SNAFU ? Gothamist"
. Archived from
the original
on 4 January 2020
. Retrieved
4 January
2020
.
- ^
Pallus, Patryk (3 January 2020).
"Wielka awaria drukarek fiskalnych. Producent naprawia urz?dzenia, firmy licz? straty"
.
Business Insider
(in Polish)
. Retrieved
4 January
2020
.
- ^
"Suunto Spartan Software updates"
.
- ^
"Technical Note TN1049 Approaching the Millennium: The Mac and the Year 2000"
. Archived from
the original
on 13 November 2014
. Retrieved
20 January
2020
.
- ^
"Vintage Mac 2020 fixes"
. Retrieved
21 January
2020
.
- ^
"Q192201: XCLN: Schedule + 1.0 Will Not Run After 12/31/2019"
.
KnowledgeBase Archive
. Retrieved
6 July
2022
.
- ^
Jeong, Eugene (13 January 2021).
"Users report an interesting glitch in Samsung's One UI 3.0, but it has an easy fix"
.
Phone Arena
. Retrieved
9 March
2023
.
- ^
Bhardwaj, Deveshwar (21 May 2021).
"Samsung One UI 3.0/3.1 (Android 11) update bug tracker [Cont. updated]"
.
PiunikaWeb
. Retrieved
9 March
2023
.
- ^
Born, Gunter (1 January 2022).
"Exchange Year 2022 Problem: FIP-FS Scan Engine failed to load ? Can't Convert "2201010001" to long (2022/01/01 00:00 UTC)"
.
Born's Tech and Windows World
. Retrieved
1 January
2022
.
- ^
Martin, Alexander (2 January 2022).
"Remember the Y2K bug? Microsoft confirms new Y2K22 issue"
.
Sky News
.
- ^
"Honda Clocks Are Stuck 20 Years in the Past And There Isn't A Fix"
.
Jalopnik
. 6 January 2022
. Retrieved
8 January
2022
.
- ^
"Shoddy coding has some Honda cars stuck in the year 2002"
.
Engadget
. 7 January 2022
. Retrieved
8 January
2022
.
- ^
Acoba, Paulo (17 August 2022).
"Honda & Acura owners with clock problems report, as of August 17, their time is self-correcting but many are still stuck with the wrong date"
.
Archived
from the original on 30 May 2023.
- ^
'Leap year glitch' shuts some New Zealand fuel pumps
Reuters
- ^
Final Fantasy Game Broken Due To Leap Day
Kotaku
- ^
Theatrhythm Final Fantasy on Nintendo Switch Doesn’t Work Today, Feb. 29, Seemingly Because It’s a Leap Year
IGN
- ^
EA Sports WRC Crashing on Start-Up Today, Feb. 29, Because 2024's a Leap Year
IGN
- ^
"Big tech warns of 'Japan's millennium bug' ahead of Akihito's abdication"
.
The Guardian
. 25 July 2018.
- ^
"Years since 1900 + seven bits = breakage in 2028"
.
rachelbythebay.com
.
- ^
"MPE/iX Release 7.5 Patch Revision 2028 ? Beechglen Development Inc"
.
- ^
"Palm OS® Protein C/C++ Compiler Language & Library Reference"
(PDF)
. Retrieved
12 October
2019
.
- ^
"subject:RE: Date limited to 2031"
.
mail-archive.com
. Retrieved
12 October
2019
.
- ^
David L. Mills (12 May 2012).
"The NTP Era and Era Numbering"
. Retrieved
24 September
2016
.
- ^
W. Richard Stevens; Bill Fenner; Andrew M. Rudoff (2004).
UNIX Network Programming
. Addison-Wesley Professional. pp. 582?.
ISBN
978-0-13-141155-5
.
- ^
"gmtime, _gmtime32, _gmtime64"
. Microsoft
. Retrieved
8 April
2022
.
- ^
"Oracle Access Manager"
.
Oracle Communities
. Oracle Corporation. 24 March 2022
. Retrieved
25 February
2023
.
- ^
Apple Computer, Inc.,
Inside Macintosh
, Volume II, Addison Wesley, 1985, p. 369
- ^
"ProDOS Dates -- 2000 and Beyond"
. Apple, Inc
. Retrieved
6 December
2019
.
- ^
"ProDOS 2.5"
. Retrieved
9 June
2021
.
- ^
a
b
Lascu, Octavian; Eckam, Hans-Peter; Kozakos, George; Pereira, Paulo Vitor (June 2013),
Server Time Protocol Planning Guide
, IBM Redbooks (4th ed.),
IBM
, p. 19,
ISBN
978-0738438108
, retrieved
11 August
2019
- ^
"SAP note 2258792 (access to SAP Support Portal required)"
. 30 November 2018.
- ^
"strptime - The Open Group Base Specifications Issue 7, 2018 edition"
. Retrieved
4 March
2023
.
- ^
J. R. Stockton (12 April 2009).
"Critical and Significant Dates"
. Archived from
the original
on 7 September 2015
. Retrieved
20 August
2009
.
- ^
https://www.riscosopen.org/wiki/documentation/show/OS_Word%2014_3
- ^
"time package ? time"
.
pkg.go.dev
.
- ^
"Time series / Date functionality ? pandas 1.3.4 documentation"
.
- ^
"std::chrono::duration"
.
en.cppreference.com
.
- ^
"Update version for v5.0.0 release"
. Archived from
the original
on 21 January 2021
. Retrieved
19 June
2021
.
- ^
ext4: Fix handling of extended tv_sec
- ^
Ext4 Disk Layout: Inode Timestamps
- ^
Herschel, John (1849).
Outlines of Astronomy
. p. 629.
- ^
Steel, Duncan (2000).
Marking Time: The Epic Quest to Invent the Perfect Calendar
. John Wiley & Sons. p. 185.
ISBN
978-0-471-29827-4
.
- ^
Chris Hemedinger.
"In the year 9999..."
- ^
"Microsoft Access Database Files"
.
SAS 9.4 and SAS® Viya® 3.5 Programming Documentation
. The Conversion of Date and Time Values between SAS Data Sets and Microsoft Access Database.
- ^
"OlMarkInterval enumeration (Outlook)"
. 30 March 2022.
- ^
"Filtering Items Using Query Keywords"
. 22 January 2022.
- ^
"Differences between the 1900 and the 1904 date system ? Office"
.
Microsoft
. 5 May 2022
. Retrieved
22 February
2023
.
- ^
"Excel specifications and limits"
.
Microsoft Support
. Retrieved
22 February
2023
.
- ^
Thulin, Anders (6 April 2013).
"Interpretation of NTFS Timestamps"
.
Forensic Focus
. Retrieved
23 July
2019
.
- ^
"Top 10 Fun Reasons why you Should Stop Using Delphi, now!"
. Archived from
the original
on 23 January 2008
. Retrieved
21 January
2008
.
- ^
"Folio TechNote"
. Archived from
the original
on 9 February 2008
. Retrieved
21 January
2008
.
- ^
"Date ? Javascript"
.
MDN
. Retrieved
5 July
2022
.
- ^
William Porquet (15 August 2007).
"Project 2038 FAQ"
. Retrieved
5 March
2010
.
- ^
"Date/Time Conversion Contract Language"
(PDF)
. Office of Information Technology Services, New York. 23 November 2021
. Retrieved
25 February
2023
.
- ^
"All the TCP/IP ports that are in a TIME_WAIT status are not closed after 497 days from system startup in Windows Vista, in Windows 7, in Windows Server 2008 and in Windows Server 2008 R2"
.
- ^
"Computer Hangs After 49.7 Days"
. 8 May 1999. Archived from
the original
on 8 May 1999.
- ^
"Hysteresis effect on threadpool hill-climbing · Issue #51935 · dotnet/runtime"
.
GitHub
. Retrieved
25 February
2024
.
- ^
Edgar Alvarez (1 May 2015).
"To keep a Boeing Dreamliner flying, reboot once every 248 days"
.
Engadget
. Retrieved
2 April
2020
.
- ^
Gareth Corfield (2 April 2020).
"Boeing 787s must be turned off and on every 51 days to prevent 'misleading data' being shown to pilots"
.
The Register
. Retrieved
2 April
2020
.
- ^
"The Answer to the Arduino millis() Overflow/Wraparound Question"
.
EEWeb
. 22 March 2018.
- ^
"Power ? How to keep track of millis during sleep mode"
.
Year-related problems
|
---|
Decimal or BCD storage related
| |
---|
Binary storage related
| |
---|
Hexadecimal storage related
| |
---|
|