必威体育Betway必威体育官网
当前位置:首页 > IT技术

[PHP]日期和时间

时间:2019-09-06 01:10:00来源:IT技术作者:seo实验室小编阅读:57次「手机版」
 

日期时间

在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

比特币8000美元:不到两个月时间价格翻倍

A5创业网(公众号:iadmin5)5月14日讯,虽然数字货币很多人都不看好,但是比特币却逆势中大涨,盘中一度突破8000美元,从低点不到4000美元来

网络营销六步引导法 最短时间帮你找到合适自己的方法

很多的企业运营人员在想做网络营销,却不知道从哪里开始,丝毫没有头绪,甚至有些老板以为互联网营销就是开通一个公众号,在没有任何预算

苹果员工慈善捐款:2018年贡献25万小时自愿捐助性工作时

A5创业网(公众号:iadmin5)1月22日报道,国外媒体最新报道,苹果的内部员工捐赠计划自创立以来,已为世界各地的非营利组织捐出了3.65亿美元

Oracle日期格式化以及extract函数的使用

由于业务需要,这两天在学习Oracle,发现Oracle里面的日期它会给你转成一种很不习惯的格式,于是想着怎么样把它弄成年、月、日的格式来

分享到:

栏目导航

推荐阅读

热门阅读