时间

获取时间戳

将任何英文文本的日期或时间描述解析为 Unix 时间戳

strtotime()

// 获取服务器当前时间

$time = time();

// 时间戳 转化为 文本的时间 时间描述

$time = date("Y-m-d h:i:s", $time)."<br/>";

// 通过date函数获取年份

echo 'current year:'.date("Y");

// 字符串转time类型

$time = strtotime("2012-05-27 10:52:05");


计算time

$nextDay = strtotime("+1 day", time());// 时间戳加1天
$lastDay = strtotime("-1 day", time());  
$nextMonth = strtotime("+1 month", time());//  时间戳加1月
$lastMonth = strtotime("-1 month", time());  
$nextYear = strtotime("+1 year", time());//  时间戳加1年
$lastYear = strtotime("-1 year", time());


获取指定时间戳

//------获取上个月月初时间戳----

$thisyear = date('Y');
$thismonth = date('m');
if($thismonth == 1){
    $newThisyear= $thisyear - 1;
    $newThismonth= 12;
}else{
    $newThisyear= $thisyear;
    $newThismonth= $thismonth - 1;
}
$lastStartDay = $thisyear . '-' . $thismonth . '-1';
$lastMonth = $newThisyear . '-' . $newThismonth . '-1';
$starttime = strtotime($lastStartDay);//本月月初时间戳
$lastMonth = strtotime($lastMonth);//上个月月初时间戳

//----- 时间戳 增加一个月 获取月初时间戳 月末时间戳----

public function month($c_time){
        $thismonth = date('m',$c_time);
        $thisyear = date('Y',$c_time);
        if ($thismonth == 12) {
            $lastmonth = 1;
            $lastyear = $thisyear + 1;
        } else {
            $lastmonth = $thismonth + 1;
            $lastyear = $thisyear;
        }
        $lastStartDay = $lastyear . '-' . $lastmonth . '-1';
        $lastEndDay = $lastyear . '-' . $lastmonth . '-' . date('t', strtotime($lastStartDay));
        $b_time = strtotime($lastStartDay); //初时间戳
        $e_time = strtotime($lastEndDay);   //末时间戳
        return $lastEndDay;
    }

// --------------- 获取一个时间的月末时间 ---------------

public function month_end($setting_time){
        
    $lastStartDay = date('Y',$setting_time) . '-' . date('m',$setting_time) . '-1';
    $lastEndDay = date('Y',$setting_time) . '-' . date('m',$setting_time) . '-' . date('t', strtotime($lastStartDay));
        
    $StartDayTime = strtotime($lastEndDay);   //月初时间戳
    $lastEndDayTime = strtotime($lastEndDay);   //末时间戳
        
    return $lastEndDayTime;
}

两个时间戳的相差

//  ----------------- 两个时间的差 ---------------------

function diffDate($start,$end){
    $start = strtotime($start);
    $end = strtotime($end);
    if(!is_numeric($start)||!is_numeric($end)) return '';
    if($start == $end){
        $d=array();
        $d[0] = date('Y-m',$end);
    }else{
        $start=date('Y-m',$start);
        $end=date('Y-m',$end);
        //转为时间戳
        $start=strtotime($start.'-01');
        $end=strtotime($end.'-01');
        $i=0;//http://www.phpernote.com/php-function/224.html
        $d=array();
        while($start<=$end){
            //这里累加每个月的的总秒数 计算公式:上一月1号的时间戳秒数减去当前月的时间戳秒数
            $d[$i]=trim(date('Y-m',$start),' ');
            $start+=strtotime('+1 month',$start)-$start;
            $i++;
        }
    }
    return count($d);
}

//------------对比两个时间相差多长时间--------------

function getMonthNum( $date1, $date2, $tags='-' ){
    $date1 = explode($tags,$date1);
    $date2 = explode($tags,$date2);
    return abs($date1[0] - $date2[0]) * 12 + abs($date1[1] - $date2[1]);
}

// ------------获取两个时间 中间的所有月份 数组------

    function diffDate($start,$end){
    $start = strtotime($start); 
    $end = strtotime($end);
    if(!is_numeric($start)||!is_numeric($end))
        return '';
    if($start == $end){
        $d=array();
        $d[0] = date('Y-m',$end);
    }else{
        $start=date('Y-m',$start);
        $end=date('Y-m',$end);
        //转为时间戳
        $start=strtotime($start.'-01');
        $end=strtotime($end.'-01');
        $i=0;//http://www.phpernote.com/php-function/224.html
        $d=array();
        while($start<=$end){
            //这里累加每个月的的总秒数 计算公式:上一月1号的时间戳秒数减去当前月的时间戳秒数
            $d[$i]=trim(date('Y-m',$start),' ');
            $start+=strtotime('+1 month',$start)-$start;
            $i++;
        }
    }
    $b_count = count($d);
    return $b_count;
}

当前时间加年月日时分秒

// 时间加法

echo '当前时间加一个月,一个礼拜,一天,一小时,15分钟这里测试';  
echo '<br>';  
echo '当前时间是'.date('Y-m-d H:i:s',time());  
$now = date('Y-m-d H:i:s',time());  
echo '<br>';  
echo '当前时间加长期这里就加10年吧是:'. date("Y-m-d H:i:s",strtotime("+10years",strtotime($now)));  
echo '<br>';  
echo '当前时间加一年是:'. date("Y-m-d H:i:s",strtotime("+1years",strtotime($now)));  
echo '<br>';  
echo '当前时间加一月是:'. date("Y-m-d H:i:s",strtotime("+1months",strtotime($now)));  
echo '<br>';  
echo '当前时间加一周是:'. date("Y-m-d H:i:s",strtotime("+7days",strtotime($now)));  
echo '<br>';  
echo '当前时间加一周是:'. date("Y-m-d H:i:s",strtotime("+1weeks",strtotime($now)));  
echo '<br>';  
echo '当前时间加1小时是:'. date("Y-m-d H:i:s",strtotime("+1hours",strtotime($now)));  
echo '<br>';  
echo '当前时间加15分钟是:'. date("Y-m-d H:i:s",strtotime("+15minutes",strtotime($now)));  
echo '<br>';  
echo '当前时间加1分钟是:'. date("Y-m-d H:i:s",strtotime("+1minutes",strtotime($now)));  
echo '<br>';

代码执行时间

$t1 = microtime(true);
// ... 执行代码 ...
$t2 = microtime(true);
echo '耗时'.round($t2-$t1,3).'秒<br>';
echo 'Now memory_get_usage: ' . memory_get_usage() . '<br />';

date使用表


formatcharacter 格式符

Description 描述

Example returned values

示例返回值

Day

---

---

d

Day of the month, 2 digits with leading zeros

每个月的第一天,两个带前导零的数字

01 to 31

D

一天的文本表现,三个字母

A textual representation of a day, three letters

Mon through Sun

j

Day of the month without leading zeros

没有前导零的月份的第一天

1 to 31

l(lowercase 'L')

A full textual representation of the day of the week

一周中一天的完整文本表示

Sunday through Saturday

N

ISO-8601 numeric representation of the day of the week (added in PHP 5.1.0)

ISO-8601星期几的数字表示(PHP 5.1.0中添加)

1 (for Monday) through 7 (for Sunday)

S

English ordinal suffix for the day of the month, 2 characters

英文序号后缀为月日,2个字符

stndrd or th. Works well with j

w

Numeric representation of the day of the week

星期几的数字表示

0 (for Sunday) through 6 (for Saturday)

z

The day of the year (starting from 0)

年中的第一天(由0开始)

0 through 365

Week

---

---

W

ISO-8601 week number of year, weeks starting on Monday

ISO-8601年度周数,周数从周一开始

Example: 42 (the 42nd week in the year)

Month

---

---

F

A full textual representation of a month, such as January or March

月份的完整文本表示,如一月或三月

January through December

m

Numeric representation of a month, with leading zeros

月份的数字表示,以0开头

01 through 12

M

A short textual representation of a month, three letters

一个月的短文本表示,三个字母

Jan through Dec

n

一个月的数字表示,没有前导零

1 through 12

t

Number of days in the given month

给定月份的天数

28 through 31

Year

---

---

L

Whether it's a leap year

无论是闰年

1 if it is a leap year, 0 otherwise.

o

ISO-8601 week-numbering year. This has the same value as Y, except that if the ISO week number (W) belongs to the previous or next year, that year is used instead. (added in PHP 5.1.0)

iso - 8601 week-numbering。这个值与Y相同,只是如果ISO周数(W)属于前一年或下一年,则使用前一年。(PHP 5.1.0中添加)

Examples: 1999or 2003

Y

A full numeric representation of a year, 4 digits

一个完整的数字表示的一年,4位数字

Examples: 1999or 2003

y

A two digit representation of a year

两位数表示一年

Examples: 99 or 03

Time

---

---

a

Lowercase Ante meridiem and Post meridiem

小写子午线前和子午线后

am or pm

A

Uppercase Ante meridiem and Post meridiem

子午前和子午前为大写

AM or PM

B

Swatch Internet time

斯沃琪的上网时间

000 through 999

g

12-hour format of an hour without leading zeros

12小时格式的一个小时没有前导零

1 through 12

G

24-hour format of an hour without leading zeros

0 through 23

h

12-hour format of an hour with leading zeros

12小时格式的一个小时与前导零

01 through 12

H

24-hour format of an hour with leading zeros

24小时格式的一个小时与前导零

00 through 23

i

Minutes with leading zeros

前导为零的分钟

00 to 59

s

Seconds, with leading zeros

秒,前导为零

00 through 59

u

Microseconds (added in PHP 5.2.2). Note that date() will always generate 000000 since it takes an integer parameter, whereas DateTime::format() does support microseconds if DateTime was created with microseconds.

微秒(PHP 5.2.2中添加)。

注意date()将始终生成000000,因为它接受一个整数参数,而DateTime::format()如果使用微秒创建DateTime,则支持微秒。

Example: 654321

v

Milliseconds (added in PHP 7.0.0). Same note applies as for u.

毫秒(在PHP 7.0.0中添加)。同样的注意事项也适用于u。

Example: 654

Timezone

---

---

e

Timezone identifier (added in PHP 5.1.0)

时区标识符(PHP 5.1.0中添加)

Examples: UTCGMTAtlantic/Azores

I (capital i)

Whether or not the date is in daylight saving time

无论日期是否在夏令时

1 if Daylight Saving Time, 0otherwise.

O

Difference to Greenwich time (GMT) in hours

与格林尼治时间(GMT)的时差,以小时计算

Example: +0200 <