导读:本篇文章编程笔记来给大家介绍有关php如何处理公元前日期的相关内容,希望对大家有所帮助,一起来看看吧。
本文目录一览:
1、PHP 输入0001-01-02 日期格式
2、php 如何处理 1970前时间 时间戳失效了
3、用PHP怎么取得7天前的日期
4、wordpress如何修改文章的发布时间为公元前XX年?比如公元前7000万年的恐龙时代?
5、如果在PHP中判断某一天是在某一日期的前或后
6、php怎么将指定日期转换为时间戳?
PHP 输入0001-01-02 日期格式
在命令行窗口键入date,空一格,输入新日期,确认。
需要注意的问题:一、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)。
php 如何处理 1970前时间 时间戳失效了
php 5.2+提供了DateTime类来处理这样的问题,参考方案如下(请注意时区的处理):
//1、Unix时间戳转日期 function unixtime_to_date($unixtime, $timezone = 'PRC') { $datetime = new DateTime("@$unixtime"); //DateTime类的bug,加入@可以将Unix时间戳作为参数传入 $datetime-setTimezone(new DateTimeZone($timezone)); return $datetime-format("Y-m-d H:i:s"); }
//2、日期转Unix时间戳
function date_to_unixtime($date, $timezone = 'PRC') {
$datetime= new DateTime($date, new DateTimeZone($timezone));
return $datetime-format('U');
}
echo date_to_unixtime("1900-1-31 00:00:00"); //输出-2206425952
echo 'br';
echo unixtime_to_date(date_to_unixtime("1900-1-31 00:00:00")); //输出1900-01-31 00:00:00
用PHP怎么取得7天前的日期
在PHP里面,使用time函数获得当前的时间(年月日时分秒都有,实际上是从1970 年 1 月 1 日 00:00:00到当前时间的秒数。
那么,要获得7天前的时刻只需要当前时刻减去7天*24小时/天*3600秒/小时即可,也就是time()-7-24*3600。
例子代码:
?php
$t=time();
echo date('Y-m-d H:i:s',$t)."\n";
$t-=7*24*3600;
echo date('Y-m-d H:i:s',$t)."\n";
?
上面的代码显示:
2015-12-17 13:29:59
2015-12-10 13:29:59
如果你只需要到天,不需要时分秒,那么date函数的第一个参数改为'Y-m-d'即可。
wordpress如何修改文章的发布时间为公元前XX年?比如公元前7000万年的恐龙时代?
php能表达的时间是有限的。php最大时间戳是:2038年1月19号
有效的时间戳典型范围是格林威治时间1901年12月13日20:45:54到2038年1月19日03:14:07。(此范围符合32位有符号整数的最小值和最大值)。不过在 PHP 5.1 之前此范围在某些系统(如 Windows)中限制为从 1970 年 1 月 1 日到 2038 年 1 月 19 日。
当然你也可以设置成一组无意义的数字,写入数据表中,当做时间来处理,但是不能作为时间操作!
如果在PHP中判断某一天是在某一日期的前或后
//你还需要知道的另一个变量是年份,不过依你的意思应该是当年。
$timestamp = time();
$dateYear = date('Y', $timestamp);//当前年,依当前需要可以不需要比较,但有时也许会用到,比如你的记录不是当年要处理的
$dateMOnth= date('n', $timestamp);//当前月份数字,没有前导零
$dateDay = date('j', $timestamp);//月份中的第几天,没有前导零
//剩下的就是比较了,比如你要比较的日期是 2007-03-01
$eventDate = '2007-03-01';
$eventDateArr = explode('-', $eventDate);
$eventYear = intval($eventDateArr[0]);
$eventMOnth= intval($eventDateArr[1]);
$eventDay = intval($eventDateArr[2]);
//上面是年月日的拆分,根据实际情况可以调整,如果你直接可以得到就不需要这样取了。
//之后剩下的就是比较了,先比较年
if($dateYear == $eventYear) {
//同年
if($dateMOnth== $eventMonth) {
//同月
if($dateDay == $eventDay) {
//同一天,就是当前日期就是事件触发的日期
} elseif($dateDay $eventDay) {
//事件已经过期了
} else {
//事件触发日期还没到
}
} else {
//之前或之后,再需要详细判断可以在这里比较哪个月份大
}
} else {
//之前或之后,再需要详细判断可以在这里比较哪个年份大
}
//其实这种比较是最简单的逻辑判断,如果你在记录时间触发日期时记录的是 unix 时间戳,这里可以直接进行时间戳比较不过需要处理一下,因为时间戳是精确到秒的
//或者把你记录的日期及其后一天直接转化成 unix 时间戳,时分秒都用 0 ,和当前时间戳比较,细节判断就自己去分析吧,可用函数去查查手册里面 strtotime() ,时间相关函数参数很多,不过用过几次就熟悉了。
php怎么将指定日期转换为时间戳?
在MySQL中完成 。
下面介绍两种php将指定日期转换为时间戳的方法:
第一种:在MySQL中完成
这种方式在MySQL查询语句中转换,优点是不占用PHP解析器的解析时间,速度快,缺点是只能用在数据库查询中,有局限性。
UNIX时间戳转换为日期用函数: FROM_UNIXTIME()
一般形式:select FROM_UNIXTIME(1156219870);
日期转换为UNIX时间戳用函数: UNIX_TIMESTAMP()
一般形式:Select UNIX_TIMESTAMP('2006-11-04 12:23:00′);
举例:mysql查询当天的记录数:
$sql=”select * from message Where DATE_FORMAT(FROM_UNIXTIME(chattime),'%Y-%m-%d') = DATE_FORMAT(NOW(),'%Y-%m-%d') order by id desc”;
当然大家也可以选择在PHP中进行转换,下面说说在PHP中转换。
第二种:在PHP中完成 这种方式在PHP程序中完成转换,优点是无论是不是数据库中查询获得的数据都能转换,转换范围不受限制,缺点是占用PHP解析器的解析时间,速度相对慢。
UNIX时间戳转换为日期用函数: date() 一般形式:date('Y-m-d H:i:s', 1156219870);
日期转换为UNIX时间戳用函数:strtotime() 一般形式:strtotime('2010-03-24 08:15:42')
php中时间转换函数strtotime(date()) date("Y-m-d H:i",$unixtime)
php中获得今天零点的时间戳 要获得零点的unix时间戳,可以使用$todaytime=strtotime(“today”),然后再使用date("Y-m-d H:i",$todaytime)转换为日期。
时间戳转换函数:date("Y-m-d H:i:s",time()),"Y-m-d H:i:s"是转换后的日期格式,time()是获得当前时间的时间戳。如果是date("Y-m-d H:i:s",time()),则小时分秒一起显示;如果是date("Y-m-d ", time()),只显示年月日。例如:date("Y-m-d H:i:s",time())转换后为:2010-07-18 18:42:48 date("Y-m-d",time())。
结语:以上就是编程笔记为大家介绍的关于php如何处理公元前日期的全部内容了,希望对大家有所帮助,如果你还想了解更多这方面的信息,记得收藏关注本站。