PHP中的日期和时间

UNIX时间戳

UNIX时间戳是大多数计算机中保存和表示日期和时间的一种标准格式。UNIX时间戳以为32位置的证书表示格林威治标准时间。它是从1970年1月1日开始,到当前时间所经过的秒数。因为UNIX是一个32位的整数,所以处理1902年以前或2038年后的日期会出现一些问题。而Windows系统的时间戳不能为负数,这点需要尤其注意。

在 PHP中获取日期和时间时间

time()函数与mktime()函数获取UNIX时间戳
使用 time()函数可以获取当前的UNIX时间戳

 <?php
    $timeStamp=time();
?>  

如需要将指定的日期时间转变成UNIX时间戳,则可以使用mktime() 函数。

int mktime([int hour [, int minute [,int second [,int month [,int day [,int year]]]]])  

该函数的所有参数都是可选的,如果为空,则默认将当前的日期时间,转变为时间戳。另外,这个函数可以自动校正越界的输入。

<php
    echo date("Y-m-d",mktiime(0,0,0,12,36,2008))//超过日期31天,计算后输出2009-01-05   
?>

日期的计算

在PHP中,计算两个日期之间相隔的长度最简单的方法就是计算两个UNIX时间戳之差来获取。

<?php
      $year=1901;     //接收用户提交的用户出生日期  
      $month=11;
      $day=05;
      $birthday=mktime(0,0,0,$month,$day,$year);
      $nowdate=time();
      $ageUnix=$nowdate-$birthday;
      $age=floor($ageUnix/(60*60*24*365))  //将来Unix时间戳的差除以一年的秒数,得到用户的年龄
      $echo "年龄: ".$age;
?>

日期和和时间的格式化输出

由于Unix时间戳的可读性比较差,所以,我们通常需要把它转变成可读性更好的时间格式来输出。在PHP中,可以通过调用date()函数来格式化一个本地时间和日期。

string date(string format[,int timestamp])

date()函数的第一个参数是必须的,规定时间戳的转换格式。第二个是可选的,需要提供一个UNIX时间戳,默认值为time()。第一个参数,是由下表提供的特殊字符组成的格式化字符串。

格式字串可以识别以下 format 参数的字符串
format 字符说明返回值例子
d月份中的第几天,有前导零的 2 位数字0131
D星期中的第几天,文本表示,3 个字母MonSun
j月份中的第几天,没有前导零131
l(“L”的小写字母)星期几,完整的文本格式SundaySaturday
NISO-8601 格式数字表示的星期中的第几天(PHP 5.1.0 新加)1(表示星期一)到 7(表示星期天)
S每月天数后面的英文后缀,2 个字符stndrd 或者 th。可以和 j 一起用
w星期中的第几天,数字表示0(表示星期天)到 6(表示星期六)
z年份中的第几天0365
星期
WISO-8601 格式年份中的第几周,每周从星期一开始(PHP 4.1.0 新加的)例如:42(当年的第 42 周)
F月份,完整的文本格式,例如 January 或者 MarchJanuaryDecember
m数字表示的月份,有前导零0112
M三个字母缩写表示的月份JanDec
n数字表示的月份,没有前导零112
t给定月份所应有的天数2831

完整的格式化字符描述,请参见PHP手册date()函数的介绍

date()函数的应用实例:

<?php   
  // 假定今天是:March 10th, 2001, 5:16:18 pm
  $today = date('\i\t \i\s \t\h\e jS \d\a\y.');   // It is the 10th day.
  echo $today."</br>";
  $today = date("D M j G:i:s T Y");               // Sat Mar 10 15:16:08 MST 2001
  echo $today."</br>";
  $today = date('H:m:s \m \i\s\ \m\o\n\t\h');     // 17:03:17 m is month
  echo $today."</br>";
  $today = date("H:i:s");                         // 17:16:17
  echo $today."</br>";
  $today = date("Y-m-d H:i:s");                   // 2001-03-10 17:16:18 (MySQL DATETIME 格式)
  echo $today."</br>";
?> 
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值