日期时间
在PHP语言中默认设置的是标准的格林威治时间(即采用的零时区)
更改PHP语言中的时区设置有两种方法:
(1)修改php.ini文件中的设置,找到[date]下的";date.timezone="选项,将其修改为"date.timezone=Asia/Hong_Kong",然后重启Apache服务器。
(2)在应用程序中,在使用时间日期函数之前添加如下函数:date_default_timezone_set(timezone);
参数timezone为PHP可识别的时区名称,如果时区名称PHP无法识别,则系统采用UTC时区。
设置完成后,date()函数可以正常使用,不会再出现时差问题。
如果将程序上传到空间中,那么对系统时区设置时,不能修改php.in文件,只能使用date_default_timezone_set()函数时区进行设置。
PHP日期和时间函数
1.获得本地化时间戳
PHP应用mktime()函数将一个时间转换成unix时间戳值。
mktime()函数根据给出的参数返回UNIX时间戳。时间戳是一个长整数。包含了从UNIX到给定时间的秒数。
int mktime(int hour,int minute,int second,int month,int day,int year,int [is_dst])
参数:
hour 小时数
minute 分钟数
second 秒数(一分钟之内)
mont 月份数
day 天数
year 年分数(可以是两位或4位数字,0~69对应于2000~2069,70~100对应于1970~2000)
is_dst 参数is_dst在夏令时可以被设置为1,如果不是则设置为0,如果不确定是否为夏令时则设置为-1(默认值)
<?php
date_default_timezone_set("Asia/Hong_Kong");
echo "mktime函数返回的时间戳:".mktime()."<p>";
echo "当前的日期为:".date("Y-m-d",mktime())."<p>";
echo "当前的时间为:".date("H:i:s",mktime());
?>
获取当前时间戳
PHP通过time()函数获取当前的UNIX时间戳,返回值为从UNIX纪元当前时间的秒数
语法格式:
int time(void)
$nextweek=time()+(7*24*60*60);
echo 'Now:'.date("Y-m-d")."<p>";
echo 'Next Week'.date('Y-m-d',$nextweek);
获取当前日期和时间
在PHP中通过date()函数获取当前的日期和时间,
date(string format,int timestamp)
date()函数将返回参数timestamp按照指定格式而产生的字符串,其中的参数timestamp是可选的,如果省略,则使用当前时间,format参数可以是开发人员按其指定的格式输出日期和时间。
关于时间日期的预定义常量
函数
DATE_ATOM 原子钟格式
DATE_COOKIE HTTP Cookies格式
DATE_ISO8601 ISO-8601格式
DATE_RFC822 RFC822格式
DATE_RFC850 RFC850格式
DATE_RSS RSS格式
DATE_W3C World Wide Web Consortium格式
获取日期信息
日期是数据处理中经常使用的信息之一。
array getdate(int timestamp)
getdate()函数返回数组形式的日期和时间信息。
getdate()函数返回的关联数组元素说明
函数
seconds 秒,返回值为0~59
minutes 分钟,返回值为0~59
hours 小时,返回值为0~23
mday 月份中第几天,返回值为1~31
wday 星期中第几天,返回值为0(表示星期日)~6(表示星期六)
mon 月份数字,返回值为1~12
year 4位数字表示的完整文本表示,返回值为Sunday~Staurday
weekday 星期几的完整文本表示,返回值为Sunday~Saturday
month 月份的完整文本表示,返回值为January~December
0 返回从UNIX纪元开始的秒数
检验日期的有效性
bool checkdate(int month,int day,int year)
echo "检查日期时间有效";
$year = 2008;
$month = 2;
$day1=29;
$day2=30;
var_dump(checkdate($month,$day1,$year));
echo "<br>";
var_dump(checkdate($month,$day2,$year));
输出格式化的日期和时间
date()函数的format选项
<?php
echo "输出单个变量:".date("Y")."-".date("m")."-".date("d");
echo "<p>";
echo "输出组合变量:".date("Y-m-d");
echo "<p>"
echo "输出更详细的日期和时间:".date("Y-m-d H:i:s");
echo "<p>";
?>
显示本地化的日期和时间
1.setlocal()函数
setlocal()函数可以改变PHP默认的本地化环境。
string setlocal(string category,string local);
参数local如果为空,就会使用系统环境变量的local或lang的值,否则就会应用local参数所指定的本地化环境。
strftime()函数
strftime()函数根据本地化环境设置来格式化输出日期和时间。
语法格式:string strftime(string format,int timestamp)
对于strftime()函数,可能不是所有的转换标记都被C库文件支持,这种情况下PHP的strftime()不支持。
<?php
setlocal(LC_ALL,"en_US");
echo "美国格式:".strftime("today is %A");
echo "<p>";
setlocal(LC_ALL,"chs");
echo "中文简体格式:".strftime("今天是%A");
echo "<p>";
setlocal(LC_ALL,"cht");
echo "<p>";
echo "繁体中文格式:".stftime("今天是%A");
?>
将日期和时间解析为UNIX时间戳
PHP中应用strtotime()函数可以将任何英文文本的日期和时间解析为UNIX时间戳,其值相对于now参数给出时间。
int strtotime(string time[,int now]);
该函数有两个参数,如果参数time的格式是绝对时间,则now参数不起作用,如果参数time的格式是相对时间,那么其对应的时间就是参数now来提供的,如果没有提供参数now,对应的时间就为当前时间的,如果解析失败返回false,在PHP5.1.0之前的本函数返回失败时为-1.
echo strtotime("now")."\n";
echo "输出时间:".date("Y-m-d H:i:s",strtotime("now"))."<br>";
echo strtotime("21 May 2009")."\n";
echo "输出时间:".date("Y-m-d H:i:s",strtotime("21 May 2009"))."<br>";
echo strtotime("+3 day")."\n";
echo "输出时间:".date("Y-m-d",strtotime("+3 day"))."<br>";
echo strtotime("+1 week")."<br>";
echo strtotime("+1 week 2 days 3 hours 4 seconds")."<br>";
echo strtotime("next Thursday")."<br>";
日期和时间的应用
比较两个时间的大小
首先将时间解析为时间戳的格式,然后再进行比较。使用strtotime()函数
$time1 =date("Y-m-d H:i:s");
$time2 ="2008-2-3 16:30:00";
echo "变量\$time1 的时间为:".$time1."<br>";
echo "变量\$time2 的时间为:".$time2."<br>";
if(strtotime($time1) - strtotime($time2) < 0){
echo "\$time1 早于\$time2";
}else{
echo "\$time2 早于\$time1";
}
计算页面脚本的运行时间
这里使用到了microtime()函数,该函数返回当前UNIX时间戳和微秒数,返回格式为msec sec的字符串。其中sec是当前的UNIX时间戳,msec为微秒数。
string microtime(void)
/*声明run_time函数*/
function run_time(){
list($msec,$sec) = explode(" ",microtime());//使用explode函数返回两个变量
return ((float)$msec + (float)$sec);
}
$start_time = run_time();//第一次运行run_time()函数
/*运行PHP代码段*/
$time1= strtotime(date("Y-m-d H:i:s"));
$time2= strtotime("2010-2-10 17:10:00");
$time3= strtotime("2010-1-1");
$sub1 = cell(($time2 -$time1)/3600);
$sub2 = cell(($time3 -$time1)/86400);
echo "离放假还有<font color=red>$sub2</font>天";
$end_time=run_time();
// 输出运行时间
<font color=blue><?php echo ($end_time-$start_time);?></font>
explode()函数:array explode(string separator,string string);该函数的作用是将字符串(strng)依照指定的字符串或字符(separator)切开,如果separator为空(" "),那么函数将返回false,如果separator所包含的值在string中找不到,那么函数将返回string单个元素的数组。
list()函数,函数格式为void list(mixed...)。该函数的作用是将数组中的值赋给一些变量(mixed)。
相关阅读
深入理解Java:SimpleDateFormat安全的时间格式化
转载自http://www.cnblogs.com/peida/archive/2013/05/31/3070790.html想必大家对SimpleDateFormat并不陌生。SimpleDateFormat
A5创业网(公众号:iadmin5)5月14日讯,虽然数字货币很多人都不看好,但是比特币却逆势中大涨,盘中一度突破8000美元,从低点不到4000美元来
很多的企业运营人员在想做网络营销,却不知道从哪里开始,丝毫没有头绪,甚至有些老板以为互联网营销就是开通一个公众号,在没有任何预算
A5创业网(公众号:iadmin5)1月22日报道,国外媒体最新报道,苹果的内部员工捐赠计划自创立以来,已为世界各地的非营利组织捐出了3.65亿美元
由于业务需要,这两天在学习Oracle,发现Oracle里面的日期它会给你转成一种很不习惯的格式,于是想着怎么样把它弄成年、月、日的格式来