[英]php time 'off' by 8 hours and 14 minutes
我有時間/日期問題。 我正在嘗試將當前日期和時間與一天開始時(午夜)的日期/時間進行比較。 當前時間是:
echo date('d M, Y H:i:s e')."<br>";
預期返回的結果是:“ 2014年10月7日12:51:25 America / Los_Angeles”
為了讓時間從今天開始的午夜開始,我有:
echo date('d M, Y H:i:s e',strtotime(date('D, d M, Y')))."<br>";
它返回以下內容:“ 2014年10月7日20:14:00 America / Los_Angeles”
晚上10點(晚上8點)很奇怪,因為UTC不應該是08:00而不是20:00嗎? 還有14分鍾?
誰能幫助我了解這里的情況? 我想念什么?
非常感謝
您正在將一個混亂的日期字符串發送到strtotime
函數中。
如果您嘗試這樣做:
echo date('d M, Y H:i:s e').'<br>';
echo date('d M, Y H:i:s e',strtotime(date('Y-m-d H:i:s')))."<br>";
您將獲得一致的結果,因為Ymd H:i:s
是strtotime
使用的更好的格式。
該函數期望得到一個包含英語日期格式的字符串, 並將嘗試將該格式解析為相對於現在給出的時間戳的Unix時間戳 (自1970年1月1日00:00:00 UTC以來的秒數),或者當前時間(如果未提供)。
和
為了避免潛在的歧義,最好在可能的情況下使用ISO 8601(YYYY-MM-DD)日期或DateTime :: createFromFormat()
為了獲得您在午夜尋找的時間(我不建議這種方法):
echo date('d M, Y H:i:s e',strtotime(date('Y-m-d')))."<br>";
您可以輕松地輸出一個“永恆的”日期,並在date函數內直接插入一個靜態的00:00:00
:
echo date('d M, Y 00:00:00 e')."<br>";
但是我喜歡使用DateTime
對象 :
$midnight = new DateTime('today');
echo $midnight->format('d M, Y H:i:s e').'<br>';
// Output from sandbox is: 07 Oct, 2014 00:00:00 US/Pacific<br>
令人高興的是,您可以輕松地在本地進行比較,而無需任何其他操作:
$now = new DateTime('now'); // 2014-10-07 12:34:56
$midnight = new DateTime('today'); // 2014-10-07 00:00:00
var_dump($now > $midnight); // true
var_dump($now < $midnight); // false
var_dump($now === $midnight); // false
var_dump($now !== $midnight); // true
date('Ymd H:i:s')
給您當前時間,而不是午夜。 嘗試使用下一個代碼:
echo date('d M, Y H:i:s e',strtotime(date('Y-m-d 00:00:00')))."<br>";
“ 00:00:00”將時間設置為午夜。
您可以使用以下簡單變體:
echo date('d M, Y 00:00:00 e')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.