PHP中的DateTime類


DataTime類跟date(),strtotime(),gmdate()等函數有相同的作用,都是用來處理日期和時間的,但DateTime類更加直觀、方便, 所以在PHP5.2.0以后推薦使用DateTime類而不是相應的函數。

下面來看一下DateTime類的用法。

1. 獲取當前系統時間並打印

 

<?php
$date = new DateTime();
echo $date->format('Y-m-d H:i:s');
?>

 

執行結果為:2014-08-25 12:58:29

2. 獲取特定時間並打印

 

<?php
$date = new DateTime('2014-05-04');
echo $date->format('Y-m-d H:i:s');
echo "\n";
$date2 = new DateTime('tomorrow');
echo $date2->format('Y-m-d H:i:s');
echo "\n";
$date2 = new DateTime('+2 days');
echo $date2->format('Y-m-d H:i:s');
?>

 

執行結果為: 2014-05-04 00:00:00 2014-08-26 00:00:00 2014-08-27 13:13:34

或則通過DateTime的其他方法

 

<?php
$date = new DateTime();
// add方法
$date->add(new DateInterval('P1D'));
echo $date->format('Y-m-d H:i:s');
echo "\n";
// modify方法
$date->modify('+1 day');
echo $date->format('Y-m-d H:i:s');
echo "\n";
// setDate方法
$date->setDate('1989-11-10');
echo $date->format('Y-m-d H:i:s');
echo "\n";
// setTime方法
$date->setTime('11:10:10');
echo $date->format('Y-m-d H:i:s');
echo "\n";
?>

 

執行結果分別為: 2014-08-26 15:02:57 2014-08-27 15:02:57 1989-11-10 15:02:57 1989-11-10 11:10:10

3. unix時間戳的轉換

獲取當前時間的時間戳

 

<?php
$date = new DateTime();
echo $date->format('U');
echo "\n";
?>

 

執行結果為:1408950651

或者

 

<?php
$date = new DateTime();
echo $date->getTimestamp();
echo "\n";
?>

 

將時間戳轉換為可讀時間

 

<?php
$date = new DateTime('@1408950651');
$date->setTimezone(new DateTimeZone('Asia/Shanghai'));
echo $date->format('Y-m-d H:i:s');
echo "\n";
?>

 

執行結果為:2014-08-25 15:10:51

或者

 

<?php
$date = new DateTime();
$date->setTimestamp(1408950651);
echo $date->format('Y-m-d H:i:s');
echo "\n";
?>

 

4. 日期的比較

日期大小比較

 

<?php
$date1 = new DateTime();
$date2 = new DateTime('2014-09-15');

if($date1 < $date2) {
echo $date2->format('Y-m-d H:i:s') . ' is in the future';
}
?>

 

日期間隔

 

<?php
$date1 = new DateTime();
$date2 = new DateTime('2014-09-15');

$diff = $date1->diff($date2);
print_r($diff);
?>

 

執行結果為: DateInterval Object ( [y] => 0 [m] => 0 [d] => 20 [h] => 7 [i] => 35 [s] => 50 [weekday] => 0 [weekday_behavior] => 0 [first_last_day_of] => 0 [invert] => 0 [days] => 20 [special_type] => 0 [special_amount] => 0 [have_weekday_relative] => 0 [have_special_relative] => 0 )

將返回的對象格式化輸出

 

<?php
$date1 = new DateTime();
$date2 = new DateTime('2014-09-15');

$diff = $date1->diff($date2);
echo $diff->format("The future will come in %Y years %m months and %d days");
?>

 

輸出結果為:The future will come in 00 years 0 months and 20 days


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM