簡體   English   中英

如何使用PHP處理日期和時間?

[英]How to handle date and time with PHP?

我需要用PHP的MySQL數據庫中的時間和日期值進行更復雜的計算。

我需要添加或減去給定日期的不同值。

例如:

  • 減少1個月
  • 減少30天
  • 減去4周
  • 添加4個月
  • 添加3個月
  • 添加90天
  • 增加2年

請注意,減去1個月,4個星期或30天之間存在差異。

這樣做的首選方式是什么? 有沒有聰明的庫或者我可以用PHP自己的功能嗎?

來自http://php.net/manual/en/function.strtotime.php

<?php
echo strtotime("now"), "\n";
echo strtotime("10 September 2000"), "\n";
echo strtotime("+1 day"), "\n";
echo strtotime("+1 week"), "\n";
echo strtotime("+1 week 2 days 4 hours 2 seconds"), "\n";
echo strtotime("next Thursday"), "\n";
echo strtotime("last Monday"), "\n";
?>

您可以添加第二個參數以使其添加到給定時間:

echo strtotime("+1 week",$timestamp)

您可以結合使用PHP5的DateTimeDateInterval對象。

$now = new DateTime();

// 30 days ago
$now->sub(new DateInterval("P30D");

// 1 week ago
$now->sub(new DateInterval("P1W");

// 2 years from now
$now->add(new DateInterval("P1Y");

有關間隔代碼列表,請參閱手冊

從PHP 5.2開始,您就擁有了DateTime對象。 你可以做:

$date = new DateTime; // now
$date->modify('1 month ago');
echo $date->format('Y-m-d');

檢查此鏈接以獲取完整的sintax。

PHP函數strtotime在這方面非常強大。

例如:

// 1 month ago
$date = strtotime('-1 month');

// 30 days ago
$date = strototime('-30 days');
<?php
$date = date_create('2000-01-01');
date_add($date, date_interval_create_from_date_string('10 days'));
echo date_format($date, 'Y-m-d');
?>

$ date現在是'2000-01-11'。

您還可以使用date_sub減去一段時間。

更多信息:

http://www.php.net/manual/en/datetime.add.php http://www.php.net/manual/en/datetime.sub.php

查看strtotime()函數。 http://php.net/manual/en/function.strtotime.php

另請注意,您可以使用第二個參數來指示何時開始。

strtotime('+1 day', mktime(0, 0, 0, 7, 1, 2000));

嘗試梨日期庫。 非常強大和靈活,具有周期添加功能。 它完全符合你的要求。

http://pear.php.net/Date

我們在日期密集的Web應用程序中使用它,我們必須添加大量時間變量周期並計算周數等。

請看這個PHP日期

根據您的應用程序,您將要使用mysql datetime函數

http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_date-add

或像其他人一樣說的strtotime

這是另一個建議。 如果要操作從MySQL的信息,請嘗試使用MySQL提供的日期/時間的功能在這里

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM