PHP中_时间函数 date()

 更新时间:2013年8月4日 18:07  点击:596

常用时间函数:

1. string date(string format,inieger timestamp)

举例:显示 2010年10月01日 对应的模板代码为  <!--{date('Y年m月d日',$time)}-->

细心的一定发现了 Y年m月d日中 Y对应的是2010,m为10,d为01。当然还有其它更多的格式,具体可以参考下面的对照表:

 

格式字符

描述

返回值

天    ---    ---    

d    月份中的天数,个位数带0    01 到 31    

D    3个字母的英文天数    Mon 到 Sun    

j    月份中的天数,个位数不带0    1 到 31    

l (小写的'L')    英文星期的单词    Sunday 到 Saturday    

N    ISO-8601 标准的星期几数( PHP 5.1.0中增加的)    1 (代表星期一) 到7 (代表星期天)    

S    English ordinal suffix for the day of the month, 2 characters    st, nd, rd or th. Works well with j    

w    数字代表星期几    0 (星期天) 到6 (星期六)    

z    一年中的第几天 (从0开始)    0 到365    

星期    ---    ---    

W    ISO-8601标准一年中的第几个星期 ( PHP 4.1.0增加)    例如: 42 (一年的第42个星期)    

月    ---    ---    

F    英文的月份    January 到 December    

m    月份的数字 个位数带0    01 到 12    

M    英文月份的缩写    Jan 到 Dec    

n    月份的数字 个位数不带0    1 到12    

t    指定月份的天数    28 到31    

年    ---    ---    

L    是否是闰年    1 为闰年, 0 为否.    

o    ISO-8601 标准年格式 与Y相同. (added in PHP 5.1.0)    比如: 1999 或者2003    

Y    4位的年份    比如: 1999 或者2003    

y    2位数的年份    比如: 99 或者03    

时间    ---    ---    

a    小写的午前、午后    am 或者 pm    

A    大写的午前、午后    AM 或者PM    

B    互联网时间    000 到999    

g    12小时制的数字时间 个位不带0    1 到12    

G    24小时制的数字时间 个位不带0    0 到23    

h    12小时制的数字时间 个位带0    01 到12    

H    24小时制的数字时间 个位带0    00 到23    

i    分钟的数字 个位带0    00 到59    

s    分秒数字 个位带0    00 到 59    

u    分秒数 (PHP 5.2.2增加)    比如: 654321    

时区    ---    ---    

e    时区标示 (PHP 5.1.0增加)    比如: UTC, GMT, Atlantic/Azores    

I (capital i)    Whether or not the date is in daylight saving time    1 if Daylight Saving Time, 0 otherwise.    

O    Difference to Greenwich time (GMT) in hours    Example: +0200    

P    Difference to Greenwich time (GMT) with colon between hours and minutes (added in PHP 5.1.3)    Example: +02:00    

T    Timezone abbreviation    Examples: EST, MDT ...    

Z    Timezone offset in seconds. The offset for timezones west of UTC is always negative, and for those east of UTC is always positive.    -43200 through 50400    

Full Date/Time    ---    ---    

c    ISO 8601 date (added in PHP 5)    2004-02-12T15:19:21+00:00    

r    » RFC 2822 formatted date    Example: Thu, 21 Dec 2000 16:01:07 +0200    

U    Seconds since the Unix Epoch (January 1 1970 00:00:00 GMT)    

2. array getdate(integer timestamp)

该函数返回一个矩阵.

如:

<?

$current_date=getdate();

print($current_date("hours"));

print($current_date("minutes");

print($current_date("seconds");

?>

说明:

元素 描述

hours 24小时格式的小时

mday 月份中日期

minutes 分钟

mon 数字形式的月份

month 月份全称

seconds 秒数

wday 从0到6的数字形式的星期几

weekday 星期几的名称

year 年份

0 时间戳即从1970年1月1日到现在的秒数

yday 一年中数字形式的日期

3. boolean checkdate(integer month,integer day,integer year)

该函数检查日期是否合法.如:

<?

if(checkdate(2,29,1980))

print("日期合法!n");

?>

4. integer time()

该函数获得当前时间戳.如:

<?

print(time());//输出一大串整数

?>

5. integer mktime(integer hour,integer minutes,integer seconds,integer month, integer day,integer year)

该函数返回给出日期的时间戳,即从1970年1月1日到现在的秒数.

如某参数超出范围,该函数也可以解释它,如13月即为第二年的一月.

如:

<?

$currenthour=date("H");

print("50个小时后为:");

print(date("h:i A l F dS,Y",mktime($currenthour+50)));

print("<br>n");

?>

6. string microtime()

该函数返回一个字符串,由当前时间的毫秒数+空格+从1970年开始的秒数

<?

print("start:microtime()<br>n");

for($index=0;$index<1000;$index++)

print("good!");

print("stop:microtime()<br>n");

?>

7. strtotime(time,now)

strtotime() 函数将任何英文文本的日期时间描述解析为 Unix 时间戳。

<?php
echo(strtotime("now"));
echo(strtotime("3 October 2005"));
echo(strtotime("+5 hours"));
echo(strtotime("+1 week"));
echo(strtotime("+1 week 3 days 7 hours 5 seconds"));
echo(strtotime("next Monday"));
echo(strtotime("last Sunday"));
?>

 

 

戳。以下是一个简单的示例:// 设定要用的默认时区。从PHP5.1后可用
date_default_timezone_set('Asia/Chongqing');//中国地区使用
echo date("Y-m-d H:i:s");//显示当前时间
// 简单实现时间加减
$tomorrow = mktime(0, 0, 0, date("m") , date("d")+1, date("Y"));//明天
//现在的结果是时间戳,格式化显示,下面相同
echo date("Y-m-d H:i:s",$tomorrow);
$lastmonth = mktime(0, 0, 0, date("m")-1, date("d"), date("Y"));// 下个月
$nextyear = mktime(0, 0, 0, date("m"), date("d"), date("Y")+1);// 明天
// 返回当前的 Unix 时间戳
echo time();
// 返回当前 Unix 时间戳和微秒数 microtime()
function microtime_float() {
list($usec, $sec) = explode(" ", microtime());
return ((float)$usec + (float)$sec);
}
$time_start = microtime_float(); // Sleep for a while
usleep(100);
$time_end = microtime_float();
$time = $time_end - $time_start;//程序执行时间 

 


简单的时间比较函数
<?php

//简单的时间比较函数,用于对不同日期进行比较

//strtotime() 函数将任何英文文本的日期时间描述解析为 Unix 时间戳。

//语法:strtotime(time,now) ; time 规定要解析的时间字符串。

//now 用来计算返回值的时间戳。如果省略该参数,则使用当前时间。


$timer="2005-11-19 08:34:55";
$timer2="2005-11-18 05:34:55";

//注意时间格式要正确。

//第一种方法
function comparetime1($time1,$time2)
{
if(strtotime($time1)>strtotime($time2))
return "true";
else
return "false";
}
echo comparetime1($timer,$timer2);

//第二种方法
function comparetime2($time1,$time2)
{
$str=array(&apos-&apos,&apos&apos,&apos:&apos);
$rp1=str_replace($str,"",$time1);
$rp2=str_replace($str,"",$time2);
if($rp1>$rp2)
return "true";
else
return "false";
}
echo comparetime2($timer,$timer2)."
";
?>

 

 

修改从mysql中获取的datetime格式

    date函数可以设置日期格式,但是其参数只能是时间戳,对于mysql中的datetime格式,需要用strtotime()函数转换成时间戳。 

date( 'm-d   H:i ',strtotime($date));

 

这个我建议数据库中存储日期的格式为:int(10)考虑到uchome都是这么存储的我也是这么弄得,后来明白为什么这么做了

这是因为 $time 为存储的int(10) 数据可以通过PHP的date函数得到你想要的任何形式的时间

比如LZ要求的 $time1 = date('Y-m-d',$time);   2010-09-13
或者也可以是 $time2 = date('Y年m月d日 H时i分s秒',$time);  2010年9月13日 11时 52分 12秒 等等

总之存储Unix时间戳是最灵活的 也是最精确的

 

PHP服务器时间差8小时解决方案

date(‘Y-m-d H:i:s’)

结果取出来显示的时间总是于本地时间相差8个小时,我的本机是中国标准时间(GTM+8),问题应该是date()取的时间是格林威治时间,那应该怎么配置一下PHP服务器呢?

下面是我在网上找到的解决方法

问题原因所在
从php5.1.0开始,php.ini里加入了date.timezone这个选项,默认情况下是关闭的
也就是显示的时间(无论用什么php命令)都是格林威治标准时间
和我们的时间(北京时间)差了正好8个小时。

有以下3中方法可以恢复正常的时间。
1、最简单的方法就是不要用php5.1以上的版本
2、如果一定要用,而且不能修改php.ini,则需要在关于时间的初始化的语句的
上面加上 date_default_timezone_set (‘XXX’);
3、一劳永逸,仅限能修改php.ini。打开php.ini查找date.timezone 去掉前面的分号
date.timezone = PRC,重启http服务(如apache2或iis等)即可
【相关注解:】↓
关于XXX,大陆内地可用的值是:Asia/Chongqing ,Asia/Shanghai ,Asia/Urumqi (依次为重庆,上海,乌鲁木齐)
港台地区可用:Asia/Macao ,Asia/Hong_Kong ,Asia/Taipei (依次为澳门,香港,台北)
还有新加坡:Asia/Singapore
老外好像把北京漏调了
其他可用的值是:Etc/GMT-8 ,Singapore ,Hongkong ,PRC
PRC是什么?PRC是中华人民共和国啊-_-
你可以到http://www.php.net/docs.php上查到更多的地区
由于程序最后还是会把地名转为时区来计算,所以当你使用的不是内置的区域的时候,程序将自动使用格林威治标准时间。

我的笔记
如果没有修改php.ini的权限,那么应该在调用date()方法之前加上date_default_timezone_set(‘PRC’);
参数要加上双引号或单引号

修改php.ini时,
date.timezone = PRC
后面的参数不需要使用引号


[!--infotagslink--]

相关文章

  • 在java中获取List集合中最大的日期时间操作

    这篇文章主要介绍了在java中获取List集合中最大的日期时间操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-08-15
  • 教你怎么用Java获取国家法定节假日

    这篇文章主要介绍了教你怎么用Java获取国家法定节假日,文中有非常详细的代码示例,对正在学习java的小伙伴们有非常好的帮助,需要的朋友可以参考下...2021-04-23
  • .NET/C# 使用Stopwatch测量运行时间

    这篇文章主要介绍了.NET/C# 使用Stopwatch测量运行时间,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-06-25
  • mysql中获取一天、一周、一月时间数据的各种sql语句写法

    创建表:复制代码 代码如下:create table if not exists t( id int, addTime datetime default '0000-00-00 00:00:00′)添加两条初始数据:insert t values(1, '2012-07-12 21:00:00′);insert t values(2, '2012-07...2014-05-31
  • JS日期加减,日期运算代码

    一、日期减去天数等于第二个日期function cc(dd,dadd){//可以加上错误处理var a = new Date(dd)a = a.valueOf()a = a - dadd * 24 * 60 * 60 * 1000a = new Date(a)alert(a.getFullYear() + "年" + (a.getMonth() +...2015-11-08
  • jquery validate demo 基础

    jQuery Validate 插件为表单提供了强大的验证功能,让客户端表单验证变得更简单,同时提供了大量的定制选项,满足应用程序各种需求。该插件捆绑了一套有用的验证方法,包括 URL 和电子邮件验证,同时提供了一个用来编写用户自...2015-10-30
  • php计算两个日期相差天数的方法

    本文实例讲述了php计算两个日期相差天数的方法。...2015-03-15
  • MySQL中SELECT+UPDATE处理并发更新问题解决方案分享

    问题背景: 假设MySQL数据库有一张会员表vip_member(InnoDB表),结构如下: 当一个会员想续买会员(只能续买1个月、3个月或6个月)时,必须满足以下业务要求: &#8226;如果end_at早于当前时间,则设置start_at为当前时间,end_at为当前时...2014-05-31
  • PostgreSQL 字符串处理与日期处理操作

    这篇文章主要介绍了PostgreSQL 字符串处理与日期处理操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-02-01
  • 常用的日期时间正则表达式

    常用的日期时间正则表达式 下面收藏了大量的日期时间正则匹配函数,包括分钟,时间与秒都能达到。 正则表达式 (?n:^(?=d)((?<day>31(?!(.0?[2469]|11))|30(?!.0?2)|29(...2016-11-25
  • vue开发之moment的介绍与使用

    moment是一款多语言支持的日期处理类库, 在vue中如何使用呢?这篇文章主要给大家介绍了关于vue之moment使用的相关资料,需要的朋友可以参考下...2021-05-13
  • 非常全面的php日期时间运算汇总

    实例讲解之前,先来介绍几个核心函数: mktime 函数 mktime() 函数返回一个日期的 Unix 时间戳。 参数总是表示 GMT 日期,因此 is_dst 对结果没有影响。 参数可以从右到左依次空着,空着的参数会被设为相应的当前 GMT 值。...2015-11-08
  • C#中动态显示当前系统时间的实例方法

    想在网页中动态地显示当前系统的时间,找了好多,不过都是一些停在那里不动的。。。不过皇天不负有心人,终于让我找到了...2020-06-25
  • jquery validate demo 基础

    jQuery Validate 插件为表单提供了强大的验证功能,让客户端表单验证变得更简单,同时提供了大量的定制选项,满足应用程序各种需求。该插件捆绑了一套有用的验证方法,包括 URL 和电子邮件验证,同时提供了一个用来编写用户自...2015-10-30
  • C#实现将字符串转换成日期格式的方法

    这篇文章主要介绍了C#实现将字符串转换成日期格式的方法,涉及C#操作时间及字符串的相关技巧,非常简单实用,需要的朋友可以参考下...2020-06-25
  • postgresql 中的时间处理小技巧(推荐)

    这篇文章主要介绍了postgresql 中的时间处理小技巧(推荐),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-03-29
  • Mybatis执行update失败的解决

    这篇文章主要介绍了Mybatis执行update失败的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-09-01
  • 帝国CMS显示指定时间内更新的信息数量

    /*解决代码高亮太长不换行*/ .syntaxhighlighter{word-break:break-all;} uParse('#newstext', {rootPath: '/e/extend/ueditor/'}) 帝国CMS显示指定时间内更新的信息数...2016-11-01
  • C#使用TimeSpan时间计算的简单实现

    这篇文章主要给大家介绍了关于C#使用TimeSpan时间计算的相关资料,以及通过一个实例代码给大家介绍了C#使用timespan和timer完成一个简单的倒计时器的方法,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧...2020-06-25
  • C# 当前系统时间获取及时间格式详解

    这篇文章主要介绍了C# 当前系统时间获取及时间格式详解的相关资料,这里提供代码实例,帮助大家学习参考,需要的朋友可以参考下...2020-06-25