PHP最佳實踐之日期、時間和時區

1).本身處理很容易出錯,建議使用從PHP5.2以後新增的DateTime、DateInterval和DateTimeZone類。
2).使用date_default_timezone_set('Asia/Shanghai');設置默認時區爲中國時區,或者你也能夠在php.ini文件中配置。
3).使用DateTime管理時間和日期:php

<?php
//沒有傳入參數返回當前日期和時間的實例
$datetime = new DateTime();
//傳入符合規範的時間格式
$datetime = new DateTime('2017-07-14 9:19 AM')
//有時咱們必須處理那些不符合規範的時間格式t
$datetime = DateTime::createFromFormat('M j, y H:i:s', 'Jul 14, 2017 09:19:20');複製代碼

4).DateTime::createFromFormate()靜態方法使用的日期格式與date()同樣。能夠的日期和格式能夠參見php.net/manual/zh/d…
5).使用DateInterval偏移時間:git

<?php
$datetime = new DateTime('2017-07-14 14:00:00');
$interval = new DateInterval('P2W');
$datetime->add($interval);
echo $datetime->format('Y-m-d H:i:s');複製代碼

有效的週期標誌以下:github

  • Y(年)
  • M(月)
  • D
  • W
  • H
  • M(分)
  • S
    間隔的週期中M即表示月,又表示分。因此怎麼區分呢?前3個表示日期,後面的表示時間,這就須要用字母T來分隔。能夠使用T2M表示間隔兩秒。
    $dateStart = new \DateTime();
    $dateInterval = DateInterval::createFromDateString('-1 day');
    $datePeriod = new DatePeriod($dateStart, $dateInterval, 3);
    foreach ($datePeriod as $date) {
      echo $date->format('Y-m-d'), PHP_EOL;
    }複製代碼
    5).DateTimeZone類:
    <?php
    $timezone = new DateTimeZone('Asia/Shanghai');
    $datetime = new DateTime('2017-07-14', $timezone);
    //使用setTimeZone()方法修改DateTime實例的時區
    $dateTIme->setTimezone(new DateTimeZone('Asia/Hongkong'));複製代碼
    最好是一直使用UTC時間。服務器使用,本身開發默認也是,而後存入數據庫也是,這樣的話把數據顯示給用戶看的話轉換爲適當時區的日期和時間就好了。
    6).上面說到的DatePeriod類適合在迭代處理一段時間內反覆出現的一系列時期和時間,重複在日程表中記事就是一個很好的例子。
    7).nesbot/carbon組件是一個不錯的時間組件

專題系列

PHP專題系列目錄地址:github.com/xx19941215/…
PHP專題系列預計寫二十篇左右,主要總結咱們平常PHP開發中容易忽略的基礎知識和現代PHP開發中關於規範、部署、優化的一些實戰性建議,同時還有對Javascript語言特色的深刻研究。web

相關文章
相關標籤/搜索