php 格式 2099-01-01 00:00:00 的时间为时间戳

tarfly 发布于 2013/03/04 14:30
阅读 658
收藏 0
PHP

想把 2099-01-01 00:00:00   这个时间格式化成时间戳

strtotime()

mktime() 都返回false

手册mktime  

可选。规定年。在某些系统上,合法值介于 1901 - 2038 之间。不过在 PHP 5 中已经不存在这个限制了。

还有什么函数吗?

加载中
0
南湖船老大
南湖船老大

这明显是PHP的bug或者说实现的不完整,时间计算怎么能依赖操作系统位数呢?

java的计算结果是正确的,java的时间戳是用的long类型。PHP弄成int是不合理的

Date date = null;
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
	try {
	date = dateFormat.parse("2099-01-01 00:00:00");
	} catch (ParseException e) {
	e.printStackTrace();
	}
	System.out.println(date.getTime());
tarfly
tarfly
不应该依赖操作系统的
0
南湖船老大
南湖船老大

2099-01-01 00:00:00 怎么看着不对劲呢?

你的冒号全角字符了吧?2099-01-01 00:00:00

南湖船老大
南湖船老大
额 试了下,不是这个问题
tarfly
tarfly
只是发帖的时候的问题,
0
Liuxd
Liuxd
mktime(0, 0, 0, 1, 1, 2099)

4070880000


版本:PHP 5.3.17

64位的,以php-fpm方式运行。

Cynic222
Cynic222
32位的不行
0
南湖船老大
南湖船老大
32位,5.4 不行
0
voov
voov

可选。规定年。在某些系统上,合法值介于 1901 - 2038 之间。不过在 PHP 5 中已经不存在这个限制了。

--------------

函数没问题,系统问题,试试64位系统,linux的

南湖船老大
南湖船老大
回复 @voov : 日期不应该完全依赖操作系统位数
voov
voov
回复 @妖魔舞 : 再兼容32位也兼容不到64位
南湖船老大
南湖船老大
那就还是PHP函数自身问题,无法做到兼容
0
beves
beves
32位的不行,因为 32位的最大值是42Y,2038年就涨到那个点了
0
cevin
cevin

http://www.php.net/manual/zh/book.datetime.php

<?php

$date = new DateTime('2099-01-01 00:00:00', new DateTimeZone('PRC'));
echo $date->getTimestamp();

冷炎小狼
冷炎小狼
回复 @tarfly : 而且32位照样 会返回false 不支持那么大的时间
tarfly
tarfly
这个要求的版本在 5.3 以上
返回顶部
顶部