githubphpnobug 2013-04-24
介绍
PHP是一门非常令人惊奇的语言。它足够强大(最大的博客(wordpress)的核心语言),它足够广泛(运行在最大社交网站facebook上),它足够简单(作为初学者首选入门语言)。在低成本的机器上运行良好。而且php语言有很多非常不错的服务器套件(如WAMP和MAMP),很方便的安装在你的机器上。PHP有非常丰富的库资源,便于开发者很容易的处理一些业务。由于我们在项目中与日期接触最多,所以今天就从日期函数入手学习。
举一个简单的date例子
我将使用echo命令把内容输出到我们的客户端(浏览器)。我将使用下面的代码做为基础代码。
代码如下:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8" /> <title>Getting started with dates in php5</title> </head> <body> <?php date_default_timezone_set('Asia/Shanghai'); echo "Today is ",date('l'); ?> </body> </html>
Today is Friday这个函数输出星期几的文本格式。date函数至少需要一个字符参数(这个参数告诉我们怎样格式化当前日期)。
尝试不同的格式
如果你看了php手册中PHP date function,那么你将发现有很多格式化日期的方式。
<?php echo "Today is ",date('Y-m-d'); ?>
将得到
Today is 2012-08-17
有一些日期是很普遍地被使用,所以PHP提供了一些常量供你使用。举例,你可以使用Cookie获取到客户端日期。
<?php echo "Today is ",date(DATE_COOKIE); ?>你将得到如下面的内容
Today is Friday, 17-Aug-12 11:34:38 CST注意当使用常量的时候不要使用引号。
现在是什么时候?
如果你想要输出当前时间,你能使用date(不同格式化字符参数)。
<?php echo "The time is ",date('g:i:sa'); ?>你将得到
The time is 11:39:59am
本地化你的时区
如果你发现以上的代码没有给出正确的时间,很有可能是因为你的服务器设置了与你本地不同的时区。你需要在服务器上指定时区,那么你用下面的代码:
<?php date_default_timezone_set('Asia/Shanghai'); ?>
这个将设置中国上海时区。这是php5的函数(注意旧版本的php),有很多供你选择时区。如果你想永久生效,你可以修改你的php.ini文件。
获取其他时间
你经常需要其他时间,而不是现在的时间。当你用date()函数创建时间的时候,系统会使用Unix系统时间。这个时间表示从1970年1月1日 00:00:00 GMT(Unix 纪元时间),到现在的秒数。
为了详细说明怎样获取指定时间的日期,你可以提供秒数做为date(0函数的第二个参数。
<?php echo "Today is ",date('Y-m-d', 1309133434); ?>结果是:
Today is 2011-06-27
这个看起来没什么用途,但它意味着你能用date()函数做计算。这之前,你需要简单的创建一个时间戳。
创建时间戳
有很多创建时间戳的方式。我们能够使用mktime()函数得到我们需要的时间戳。
代码如下:
<?php $mytime=mktime(9, 23, 33, 6, 26, 2011); echo "Today is ",date('Y-m-d g:i:sa', $mytime); ?>
Today is 2011-06-26 9:23:33am mktime()
函数需要你依次传递小时,分钟,秒,月,日,年。这是获取时间戳的好的方式,但是有更酷的方式。
通过字符获取时间戳
你可以使用strtotime()函数获取时间戳,php把可读的字符转换成Unix时间戳。PHP在把字符转换成时间戳方面是相当灵活的,因此你可以插入各种各样的值来获取你想要的时间戳。
这是一个简单例子:
代码如下:
<?php $mytime=strtotime("7:50pm June 26 2011"); echo "Today is ",date('Y-m-d g:i:sa', $mytime); ?>
Today is 2011-06-26 7:50:00pm
PHP在解释字符方面是相当灵巧的,但不是完美的,因此,在你插入之前一定要测试你输入的字符。使用"english-like instructions"转化成需要的时间戳,这是一个非常不错的方式。你可以像下面这样做:
代码如下:
$nextfriday=strtotime("next Friday"); //下周五 $nextmonth=strtotime("+1 Month"); //从今天开始计算一个月以后的时间 $lastchristmas=strtotime("-1 year dec 25"); //去年圣诞节
代码如下:
<?php $startdate = strtotime('next Tuesday'); $enddate = strtotime('+16 weeks', $startdate); $currentdate = $startdate; echo '<ol>'; while($currentdate < $enddate): echo "\t<li>", date('M d', $currentdate); $currentdate = strtotime('+1 week', $currentdate); endwhile; echo '</ol>'; ?>
代码如下:
Aug 21 Aug 28 Sep 04 Sep 11 Sep 18 Sep 25 Oct 02 Oct 09 Oct 16 Oct 23 Oct 30 Nov 06 Nov 13 Nov 20 Nov 27 Dec 04
到某一个日期的天数
使用计算器的时候,我们会试图去计算到某一天的天数。你很容易计算11月份第四个星期四的时间戳。
代码如下:
$someday = strtotime("3 weeks thursday November 1"); $daysUtilDate = ceil(($someday - time())/60/60/24); echo "There are ", $daysUtilDate, " until Thanksgiving";
<?php. if (!empty($_POST)) {. $data1 = $_POST["data1"];$data2 = $_POST["data2"];$fuhao = $_POST["fuh