PHP笔记之:日期函数的使用介绍


Posted in PHP onApril 24, 2013

介绍
 

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"); //去年圣诞节

获取日期范围
 
strtotime返回的值被转换为数字,我们能够用这些数字做基础运算,我们可以用这些数字做很多非常有意思的事情。比如,你每周二需要教一门功课,为期16周,你想得到你教科时间。你能够做下面的事情。
<?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

注意一下这行:$currentdate = strtotime("+1 week", $currentdate)。在这行,你会发现你需要指定一个时间戳做为第二个参数,strtotime将使用这个参数代替默认时间戳(今天),并进行运算。

到某一个日期的天数
 
使用计算器的时候,我们会试图去计算到某一天的天数。你很容易计算11月份第四个星期四的时间戳。

$someday = strtotime("3 weeks thursday November 1");
$daysUtilDate = ceil(($someday - time())/60/60/24);
echo "There are ", $daysUtilDate, " until Thanksgiving";

首先,我们开始计算感恩节日期(11月1号之后的第一个星期四之后的第3个星期四),然后我们通过简单的算术,计算出感恩节到当前时间之间的天数。当我们进行比较运算的时候,我们可以使用time(),因为它返回,到当前时间的纪元秒数。
PHP 相关文章推荐
我的论坛源代码(二)
Oct 09 PHP
php 正则表达式小结
Aug 31 PHP
PHP 日期时间函数的高级应用技巧
Oct 10 PHP
php 大数据量及海量数据处理算法总结
May 07 PHP
一个显示某段时间内每个月的方法 返回由这些月份组成的数组
May 16 PHP
推荐一款PHP+jQuery制作的列表分页的功能模块
Oct 14 PHP
推荐几款用 Sublime Text 开发 Laravel 所用到的插件
Oct 30 PHP
yii实现图片上传及缩略图生成的方法
Dec 04 PHP
Ajax提交表单时验证码自动验证 php后端验证码检测
Jul 20 PHP
php版微信公众平台开发之验证步骤实例详解
Sep 23 PHP
php使用PDO事务配合表格读取大量数据插入操作实现方法
Feb 16 PHP
laravel 中某一字段自增、自减的例子
Oct 11 PHP
php笔记之:AOP的应用
Apr 24 #PHP
php class中self,parent,this的区别以及实例介绍
Apr 24 #PHP
PHP中::、-&amp;gt;、self、$this几种操作符的区别介绍
Apr 24 #PHP
php判断终端是手机还是电脑访问网站的思路及代码
Apr 24 #PHP
用PHP提取中英文词语以及数字的首字母的方法介绍
Apr 23 #PHP
基于PHP读取TXT文件向数据库导入海量数据的方法
Apr 23 #PHP
『PHP』PHP截断函数mb_substr()使用介绍
Apr 22 #PHP
You might like
老生常谈php 正则中的i,m,s,x,e分别表示什么
2017/03/02 PHP
用Laravel轻松处理千万级数据的方法实现
2020/12/25 PHP
Three.js源码阅读笔记(基础的核心Core对象)
2012/12/27 Javascript
js或jquery实现页面打印可局部打印
2014/03/27 Javascript
JavaScript中匿名、命名函数的性能测试
2014/09/04 Javascript
jquery checkbox 勾选的bug问题解决方案与分析
2014/11/13 Javascript
jQuery中:checkbox选择器用法实例
2015/01/03 Javascript
JS+CSS实现带关闭按钮DIV弹出窗口的方法
2015/02/27 Javascript
PHP+jQuery+Ajax实现多图片上传效果
2015/03/14 Javascript
javascript实现密码强度显示
2015/03/18 Javascript
jQuery实现简单隔行变色的方法
2016/02/20 Javascript
第六章之辅组类与响应式工具
2016/04/25 Javascript
小程序开发实战:实现九宫格界面的导航的代码实现
2017/01/19 Javascript
利用Jquery实现几款漂亮实用的时间轴(附示例代码)
2017/02/15 Javascript
基于casperjs和resemble.js实现一个像素对比服务详解
2018/01/10 Javascript
vue2.0 使用element-ui里的upload组件实现图片预览效果方法
2018/09/04 Javascript
Vue中用props给data赋初始值遇到的问题解决
2018/11/27 Javascript
Vue 的 v-model用法实例
2020/11/23 Vue.js
vue-router路由懒加载及实现的3种方式
2021/02/28 Vue.js
[47:55]Ti4第二日主赛事败者组 NaVi vs EG 1
2014/07/20 DOTA
[04:52]2015国际邀请赛LGD战队晋级之路
2015/08/14 DOTA
Python函数学习笔记
2008/10/07 Python
python reduce 函数使用详解
2017/12/05 Python
Django中使用Celery的教程详解
2018/08/24 Python
Python实现将字符串的首字母变为大写,其余都变为小写的方法
2019/06/11 Python
Django用数据库表反向生成models类知识点详解
2020/03/25 Python
利用4行Python代码监测每一行程序的运行时间和空间消耗
2020/04/22 Python
如何使用python的ctypes调用医保中心的dll动态库下载医保中心的账单
2020/05/24 Python
Django数据统计功能count()的使用
2020/11/30 Python
termux中matplotlib无法显示中文问题的解决方法
2021/01/11 Python
HTML5 Convas APIs方法详解
2015/04/24 HTML / CSS
毕业实习个人鉴定范文
2013/12/10 职场文书
教育局长自荐信范文
2013/12/22 职场文书
《玩具柜台前的孩子》教学反思
2014/02/13 职场文书
房屋转让协议书(标准范本)
2016/03/21 职场文书
详解CSS3.0(Cascading Style Sheet) 层叠级联样式表
2021/07/16 HTML / CSS