I am of of the understanding that due to the nature that PHP represents dates using milliseconds, you cannot represent dates past 2038. I have a problem where I want to calculate dates far in the future. Thousands of years away.
Obviously I cannot use the php date function to represent this date because of the limit, however, I have something on my side... All I want to do is store the year, month and day. I do not care for the hour, minute, seconds and milliseconds.
Am I correct in thinking that without including this additional information I should be able to calculate a lot further into the future because I am willing to discard a lot of information. Is this any library that currently does this? If not does any have any advice on how to approach this problem?
You can alternatively use the
DateTime
class, which internally represents the time components independently. Thus it is not susceptible to the 2038 limitation (unless you use ::getTimestamp).Forget Windows! Even if you're running Apache 64-Bit over Windows 64-Bit!
If you need to calculate timestamps, use a 64 bit system (not Windows):
You can run a LAMP Server using VMWare over your Windows and most likely your final host server will use this 64-Bit service as well.
In other words:
Got it ?
Note: time() and getTimestamp() both work ok in 64bit environment (linux) after year 2038 ..
You could use a 64bit platform.
Source.
Find out your platform is 64bit with
var_dump(PHP_INT_SIZE === 8)
. IfTRUE
, your system is 64 bit.You are correct in that PHP doesn't allow you to handle dates > 2038, natively. However there are libraries such as this one that take advantage of the fact that floating points are 64 bit, thus allowing you to bypass this issue if need be. (All under the assumption that you are using a 32 bit system... if you are using 64 bit, you are fine).
PHP has introduced Datetime() class in version 5.2 to solve this problem. But you still must be in 64-bit OS.