A. 关于php 时间戳只能到 2037年的问题,这是不是php的bug,大家有解决方法吗
mktime
(PHP 3, PHP 4, PHP 5)
mktime -- 取得一个日期的 Unix 时间戳
说明
int mktime ( [int hour [, int minute [, int second [, int month [, int day [, int year [, int is_dst]]]]]]] )
根据给出的参数返回 Unix 时间戳。时间戳是一个长整数,包含了从 Unix 纪元(January 1 1970 00:00:00 GMT)到给定时间的秒数
year
年份数,可以是两位或四位数字,0-69 对应于 2000-2069,70-100 对应于 1970-2000。在如今系统中普遍把 time_t 作为一个 32 位有符号整数的情况下,year 的合法范围是 1901 到 2038 之间,不过此控制自 PHP 5.1.0 起已被克服了。
如果在你本地上测试不能超过2037/38的话,那可能和硬件以及操作系统有关,我在UNIX服务器上测试是没有这个限制的,所以不必担心这个问题。
-----------------------------------
关于2003系统,我没环境做测试,所以不好说。但在我的服务器(Linux Ubuntu)上测试是没问题的。
B. php时间戳能表达的最大时间是什么,该如何解决
有效的时间戳典型范围是格林威治时间 1901 年 12 月 13 日 20:45:54 到 2038 年 1 月 19 日 03:14:07。(此范围符合 32 位有符号整数的最小值和最大值)。不过在 PHP 5.1 之前此范围在某些系统(如 Windows)中限制为从 1970 年 1 月 1 日到 2038 年 1 月 19 日。
C. php中用time()函数存入时间,如何查询当月的数据
这个time()函数是将时间保存成时间戳格式,则要查当月数据,只要查当月第一天到当月最后一天的之间的数据即可。
假设这个用来判断的字段是date
sql语句
SELECT ………… WHERE………… `date` >= 本月第一天的time值 AND `date` < 下个月第一天的time值
所以这里就只要获取当月第一天以及下个月第一天的时间戳
具体如下:
<?php
$cur = date('Y-m',time());//当天年月
$cur_y = date('Y',time());//当天年份
$cur_m = date('m',time());//当天月份
$cur_f = $cur . '-1';//本月首日
$first = strtotime($cur_f);//时间戳最小值,本月第一天时间戳
//下月首日
if($cur_m>=12){
$cur_n = ($cur_y+1) . '-1-1';
}else{
$cur_n = $cur_y . '-' . ($cur_m+1) . '-1';
}
$last = strtotime($cur_n);//时间戳最大值,下个月第一天时间戳
?>
再把$first 和 $last 放入sql语句里面就可以查询到数据了
D. java时间戳多少位
时间戳的位数是根据算法计算的,没有固定的位数。可信时间戳计算出来的电子文件的数字指纹是40位,由于精度不同,导致长度不一致,直接转换错误。
JAVA时间戳长度是13位,如:1294890876859
PHP时间戳长度是10位,
如:1294890859
php
echo
date!
(4)php时间戳最大扩展阅读:
JRE是个运行环境,JDK是个开发环境。因此写Java程序的时候需要JDK,而运行Java程序的时候就需要JRE。而JDK里面已经包含了JRE,因此只要安装了JDK,就可以编辑Java程序,也可以正常运行Java程序。但由于JDK包含了许多与运行无关的内容,占用的空间较大,因此运行普通的Java程序无须安装JDK,而只需要安装JRE即可。
E. php怎么将指定期时间转为时间戳(时间戳精确到毫秒)
php并没有直接支持毫秒的日期时间函数,所以要想得到毫秒级的时间戳,就要把秒级的时间戳*1000。
需要注意的是,由于毫秒级的时间戳已经远远超过整数的大小范围,所以要用浮点数(且精度不能低于13位)来储存。
另外,要想把毫秒级的时间戳转为时间,务必先/1000再转换,否则错误,因为php并不认识所谓的毫秒级时间戳!
不过,虽然无法获得指定时间的毫秒级时间戳,但要想获得当前时间的毫秒数,却是有办法的:
echo microtime(true)*1000;
F. php时间戳
1232553600表示从1970 年 1 月 1 日0时 0分 0秒到你指定时间(2009-1-220:0:0)的秒数。
G. php的时间戳问题
mktime() 函数返回一个日期的 Unix 时间戳。 参数总是表示 GMT 日期,因此 is_dst 对结果没有影响。 参数可以从右到左依次空着,空着的参数会被设为相应的当前 GMT 值。 参数描述 hour 可选。规定小时。 minute 可选。规定分钟。 second 可选。规定秒。 month 可选。规定用数字表示的月。 day 可选。规定天。 year 可选。规定年。在某些系统上,合法值介于 1901 - 2038 之间。不过在 PHP 5 中已经不存在这个限制了。 is_dst 可选。如果时间在日光节约时间(DST)期间,则设置为1,否则设置为0,若未知,则设置为-1。自 5.1.0 起,is_dst 参数被废弃。因此应该使用新的时区处理特性。 例子 mktime() 函数对于日期运算和验证非常有用。它可以自动校正越界的输入: <?php echo(date("M-d-Y",mktime(0,0,0,12,36,2001))); echo(date("M-d-Y",mktime(0,0,0,14,1,2001))); echo(date("M-d-Y",mktime(0,0,0,1,1,2001))); echo(date("M-d-Y",mktime(0,0,0,1,1,99))); ?> 输出: Jan-05-2002 Feb-01-2002 Jan-01-2001 Jan-01-1999 time() 函数返回当前时间的 Unix 时间戳。 语法time(void) 参数描述 void 可选。 说明 返回自从 Unix 纪元(格林威治时间 1970 年 1 月 1 日 00:00:00)到当前时间的秒数。
H. PHP时间戳判断大小问题
造成这个原因的最大可能是你直接 date()取出来的是 UTC时间,不是北京时间(UTC+8)
解决办法是在你代码的源码顶部插入一行。
date_default_timezone_set("PRC");
详见我的日志
http://snmoney.blog.163.com/blog/static/44005820130282382206/
如果时间还是不准,还有一个可能是 服务器本身的时钟不准,你可以通过 date('H:i:s') 直接输出来判断。
另外..第一行为何要输出成 文本再转换回timestamp呢?感觉效率降低,可以直接替换成 time();
I. 怎么克服php中处理时间戳只能限制在1901到2038之间的问题
这属于计算机问题,可以参考关键词 千年虫。
在32位系统中时间只能到2038
解决办法:64位运算器可以记录至约2900亿年后的292,277,026,596年12月4日15:30:08,星期日(UTC)。
因为调整成本及程序设计现在还没有得到普及。
J. php时间格式转换
标准时间与时间戳转换如下:
<?php
$nowtime=date("Y-m-dH:i:s");
//标准时间转为时间戳
$dateline=strtotime($nowtime);
//时间戳转为标准时间
$nowtime=date('H:i:s',$dateline);
?>
PHP时间戳函数获取英文文本日期时间:
当前时间:echo date(”Y-m-d H:i:s”,time()) 结果:2015-01-22 09:40:25
指定时间:echo date(”Y-m-d H:i:s”,strtotime(”+1 day”)) 结果:2015-01-23 09:40:25
需要注意的问题:
<一>、PHP时间大的来分有两种,一是时间戳类型(1228348800),二是正常日期格式(2015-12-5)
<二>、php5.1以上时间戳会与实际时间相差8小时,解决办法如下
1、最简单的方法就是不要用php5.1以上的版本--显然这是不可取的方法!!!
2、修改php.ini。打开php.ini查找date.timezone 去掉前面的分号= 后面加Asia/Shanghai,重启apache服务器即可--缺点就是如果程序
放到别人的服务器上,不能修改php.ini,那就奈何不得了。
3、在程序中添加时间的初始化的语句即:“date_default_timezone_set("Asia/Shanghai"); ”
这样就可以实现输出的是北京时间了!