美工统筹SEO,为企业电子商务营销助力!
php中Y2K38的缝隙处理体例实例阐发
一佰互联网站建造(www.taishanly.com) 宣布日期 2020-04-28 13:46:30 阅读数: 110
本文实例阐发了php中Y2K38缝隙的处理体例。分享给大师供大师参考。详细阐发以下:
Y2K38,又称 Unix Millennium Bug, 此缝隙将会影响到一切 32 位体系下用 UNIX 时候戳整数来记实时候的 PHP,及别的编程说话。
一个整型的变量所能保管的最大时候为 2038 年 1 月 19 日 03:14:07。跨越这个时候后,整型数值将会溢出。
从 1970 年 01 月 01 日起头,到天下规范时 2038 年 01 月 19 日礼拜二清晨 03:14:07 跨越 2^31 – 1。2^31 – 1 便是 0x7FFFFFFF,信任良多编程员都看过,在 32 位体系里,这表现最大的有标记整数。若是用它来表现秒数,大要相称于 68.1 年,从 1970 年到 2038 年恰好是这个数。
32位体系下显现2038年1月19日03:14:07今后的日期将会溢出。
<?php $date = "2041-01-01 12:00:00"; echo strtotime($date); // 空 溢出 echo date("Y-m-d H:i:s", strtotime($date)); // 1971-01-01 00:00:00 ?>
那末64 位体系会遭到影响吗?
实际上不会,激烈倡议停止一下测试。64 位体系下能够保管的日期最远日期是此刻宇宙春秋的 21 倍~ 292 亿年。
在32位机械上,能够利用DateTime类来处理这个题目。(PHP5.2起头引入这个类,并在5.3版本中扩大了一些体例)
代码以下:
<?php $date = "2041-01-01 12:00:00"; $dt = new DateTime($date); echo $dt->format("U"); // 2209032000 echo $dt->format("Y-m-d H:i:s"); // 2041-01-01 12:00:00 ?>
但愿本文所述对大师PHP法式设想的进修有所赞助。