PHP 遇到 2038年的問題該如何解決
来源:互联网 发布:会员卡管理php源码 编辑:程序博客网 时间:2024/06/06 03:59
转自Tsung's Blog http://blog.longwin.com.tw/2010/09/php-date-2038-2010/
2038年是很多系統都會遇到的問題(於 2038年1月19日3時14分07秒 會跳回 1970 或其他時間), 詳細可見: 2038年問題
- 註1: 32bits: 1970年1月1日 00:00:00 UTC ~ 2038年1月19日 03:14:07 UTC
- 註2: 64bits: 可記錄至2900億年後的 292,277,026,596年12月4日15:30:08 星期日(UTC)
PHP 在 2038 年的計算上, 也都做好相關的處理囉~
詳見: Is Your PHP Application Affected by the Y2K38 Bug? (下述範例取自此文)
傳統 strtotime()、date() 於 32bits 與 64bits 系統差異
<?php
$date = '2040-02-01';
$format = 'l d F Y H:i';
$mydate1 = strtotime($date);
echo date($format, $mydate1); // Wednesday 01 February 2040 00:00 就是正確結果
?>
- 32bits 結果: Thursday 01 January 1970 07:00
- 64bits 結果: Wednesday 01 February 2040 00:00
若是 64bits 的系統, 不用修改任何程式, 就可以避開 2038年 的問題囉~
使用 DateTime 來處理日期 2038年的問題
PHP 於 5.2.0 版以後, 提供了 DateTime 的物件, 不用管 32bits / 64bits 都可以解決 2038年的問題.
<?php
$date = '2040-02-01';
$format = 'l j F Y H:i';
$mydate2 = new DateTime($date);
echo $mydate2->format($format); // Wednesday 01 February 2040 00:00 就是正確結果
?>
- 32bits 結果: Wednesday 1 February 2040 00:00
- 64bits 結果: Wednesday 1 February 2040 00:00
以後程式要多用 DateTime 來處理, 之後再來把相對應的 Function 做個對照表.
- PHP 遇到 2038年的問題該如何解決
- php/遇到的问题
- [经验] -- PHP团队开发中遇到的那些坑,看我是如何解决的?
- php中遇到的问题
- PHP----遇到的Session问题
- PHP部署遇到的问题
- PHP学习遇到的问题
- PHP编码遇到的问题
- 安装PHP遇到的问题
- php遇到的CURL问题
- php遇到的一些问题
- php留言板遇到的问题
- PHP编译遇到的问题
- php遇到的问题记录
- 新手入门php遇到的问题
- [ php ] php 项目中遇到的问题!
- 2016年搭建nginx+php+mysql遇到的一些问题
- 深更半夜的遇到的PHP基础问题
- Effective C++——》条款23:宁以non-member、non-frined替换member函数
- nyoj-170-网络的可靠性
- 线程并发集合实现java生成消费模型(ArrayBlockingQueue和ConcurrentMap)
- 爱奇艺视频窗口显示不出来解决办法
- 从键盘读取三个数值并求平均值
- PHP 遇到 2038年的問題該如何解決
- Linux字符界面操作
- 如何通过 USB 设备来安装 CentOS
- C/C++语言void及void指针深层探索
- 栈的压入弹出序列
- WebLogic 11g重置用户密码过程
- Windows命令行学习
- Spring Java 发送各种邮件
- nyoj 70阶乘因式分解(二)(数学)