PHP有关时间戳的操作

我们在利用PHP开发程序的时候,总会遇到一些比较时间的困扰,现在我列举一下几种我们开发过程中常用的操作时间戳的实例:


<?php
//当天的开始(时间戳)和结束(时间戳)
$date = date( "Y-m-d" ); //如'2012-10-31'
list( $year, $month, $day ) = explode( '-', $date ); //分割后$year = '2012', $month = '10', $day = '31'

//将字符串转换成整型
$year = intval( $year );
$month = intval( $month );
$day = intval( $day );

$start_time = mktime( 0, 0, 0, $month, $day, $year ); //当天的起始时间(时间戳),如2012-10-30 00:00:00的时间戳
$end_time   = mktime( 23, 59, 59, $month, $day, $year ); // 当天最后时间(时间戳),如2012-10-31:23:59:59的时间戳,也可以是$end_time = mktime( 0, 0, 0, $month, $day+1, $year ) - 1.


//当月的第一天(如"2012-10-01")和最后一天(如"2012-10-30")
$date = date("Y-m-d");
$date = "2012-10-2";
$month_first = date("Y-m-01", strtotime($date)); //当月的第一天
$month_last  = date("Y-m-d", strtotime("$month_first +1 month -1 day"));//当月的最后一天,strtotime: 以$month_first的时间为基准,(+1 month)月份加1,(-1 day)天数-1(刚好是上个月的最后一天,strtotime返回的是时间戳,用date函数转格式)
echo $month_first."<br/>".$month_last."<br/>";

$date = date( "Y-m-d" );
list( $year, $month, $day ) = explode( '-', $date ); //分割后$year = '2012', $month = '10', $day = '31'

//将字符串转换成整型
$year = intval( $year );
$month = intval( $month );
$day = intval( $day );
$month_day = date( "t", mktime( 0, 0, 0, $month, $day, $year ) );//该月一共有几天
echo $month_day."<br/>";
$month_first = date( "Y-m-d", mktime(0, 0, 0, $month, 1, $year) );
$month_last = date( "Y-m-d", mktime(0, 0, 0, $month, $month_day, $year) );//该月的总天数其实就是该的最后一天
echo $month_first."<br/>".$month_last."<br/>";