今天做网站秒杀栏目时,用到一些PHP时间函数的知识点,觉得有必要记录下。
首先,PHP中所有函数都是UNIX纪元的,即从1970年1月1日开始的。日期是从这个时候开始的秒数。当一个函数调用从这时候计的秒数时,就把它当作(timestamp)时间戳。
时间戳是指从1970年1月1日到现在的秒数。
第一用的函数是:
array getdate ( [int timestamp])
返回一个根据 timestamp 得出的包含有日期信息的结合数组。如果没有给出时间戳则认为是当前本地时间。数组中的单元如下:
表格 1. 返回的关联数组中的键名单元
键名 | 说明 | 返回值例子 |
---|---|---|
"seconds" | 秒的数字表示 | 0 到 59 |
"minutes" | 分钟的数字表示 | 0 到 59 |
"hours" | 小时的数字表示 | 0 到 23 |
"mday" | 月份中第几天的数字表示 | 1 到 31 |
"wday" | 星期中第几天的数字表示 | 0(表示星期天)到 6(表示星期六) |
"mon" | 月份的数字表示 | 1 到 12 |
"year" | 4 位数字表示的完整年份 | 例如:1999 或 2003 |
"yday" | 一年中第几天的数字表示 | 0 到 366 |
"weekday" | 星期几的完整文本表示 | Sunday 到 Saturday |
"month" | 月份的完整文本表示 | January> 到 December |
0 | 自从 Unix 纪元开始至今的秒数,和 time() 的返回值以及用于date() 的值类似。 | 系统相关,典型值为从 -2147483648 到2147483647。 |
如:
<?php
$date_array=getdate(time());
print_r($date_array);
?>
就会输出
seconds=>42
minutes=>12
hours=>14
mday=>20
wday=>3
mon=>6
year=>2012
yday=>171
weekday=>Wednesday
month=>June
0=>1340201562
第二个是:
int time(void)
返回自从 Unix 新纪元(格林威治时间 1970 年 1 月 1 日 00:00:00)到当前时间的秒数,简单说就是放回当前时间的时间戳。
还有一个是早PHP淮北@PHP10086博客网上看到的php+js写秒杀的例子,值得学习
<?php
//php的时间是以秒算。js的时间以毫秒算
date_default_timezone_set('PRC');
//date_default_timezone_set("Asia/Hong_Kong");//地区
//配置每天的活动时间段
$starttimestr = "2011-3-29 8:10:00";
$endtimestr = "2011-3-29 9:43:00";
$starttime = strtotime($starttimestr);
$endtime = strtotime($endtimestr);
$nowtime = time();
if ($nowtime<$starttime){
die("活动还没开始,活动时间是:{$starttimestr}至{$endtimestr}");
}
if ($endtime>=$nowtime){
$lefttime = $endtime-$nowtime; //实际剩下的时间(秒)
}else{
$lefttime=0;
die("活动已经结束!");
}
?>
<script language="JavaScript">
var runtimes = 0;
function GetRTime(){
var nMS = <?php echo $lefttime; ?>*1000-runtimes*1000;
if (nMS>=0){
var nD=Math.floor(nMS/(1000*60*60*24))%24;
var nH=Math.floor(nMS/(1000*60*60))%24;
var nM=Math.floor(nMS/(1000*60)) % 60;
var nS=Math.floor(nMS/1000) % 60;
document.getElementById("RemainD").innerHTML=nD;
document.getElementById("RemainH").innerHTML=nH;
document.getElementById("RemainM").innerHTML=nM;
document.getElementById("RemainS").innerHTML=nS;
if(nMS==5*60*1000)
{
alert("还有最后五分钟!");
}
runtimes++;
setTimeout("GetRTime()",1000);
}
}
window.οnlοad=GetRTime;
</script>
<h4>距离活动结束还有 <strong id="RemainD">XX</strong>天 <strong id="RemainH">XX</strong>小时 <strong id="RemainM">XX</strong>分钟 <strong id="RemainS">XX</strong>秒</h4>