在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(默认值)
";
echo "当前的日期为:".date("Y-m-d",mktime())."";
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")."";
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 "
";
var_dump(checkdate($month,$day2,$year));
输出格式化的日期和时间
date()函数的format选项
";
echo "输出组合变量:".date("Y-m-d");
echo ""
echo "输出更详细的日期和时间:".date("Y-m-d H:i:s");
echo "
";
?>
显示本地化的日期和时间
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()不支持。
";
setlocal(LC_ALL,"chs");
echo "中文简体格式:".strftime("今天是%A");
echo "";
setlocal(LC_ALL,"cht");
echo "
";
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"))."
";
echo strtotime("21 May 2009")."\n";
echo "输出时间:".date("Y-m-d H:i:s",strtotime("21 May 2009"))."
";
echo strtotime("+3 day")."\n";
echo "输出时间:".date("Y-m-d",strtotime("+3 day"))."
";
echo strtotime("+1 week")."
";
echo strtotime("+1 week 2 days 3 hours 4 seconds")."
";
echo strtotime("next Thursday")."
";
日期和时间的应用
比较两个时间的大小
首先将时间解析为时间戳的格式,然后再进行比较。使用strtotime()函数
$time1 =date("Y-m-d H:i:s");
$time2 ="2008-2-3 16:30:00";
echo "变量\$time1 的时间为:".$time1."
";
echo "变量\$time2 的时间为:".$time2."
";
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 "离放假还有$sub2天";
$end_time=run_time();
// 输出运行时间
explode()函数:array explode(string separator,string string);该函数的作用是将字符串(strng)依照指定的字符串或字符(separator)切开,如果separator为空(" "),那么函数将返回false,如果separator所包含的值在string中找不到,那么函数将返回string单个元素的数组。
list()函数,函数格式为void list(mixed...)。该函数的作用是将数组中的值赋给一些变量(mixed)。