簡體   English   中英

使用date()函數在PHP中使用星期幾(“ N”)的ISO-8601數值表示總是返回3

[英]ISO-8601 numeric representation of the day of the week (“N”) in PHP using the date() function always returns 3

試圖使用date()函數獲取PHP中星期幾(“ N”)的ISO-8601數字表示形式; 但是,無論我在mktime()中使用哪一天,它始終返回“ 3”。

<?php

$date = date( "Y-m-d H:i:s", mktime(0, 0, 0, 9, 16, 2011) );
//$date = date( "Y-m-d H:i:s", mktime(0, 0, 0, 9, 17, 2011) );

print_r(date('N', $date));

?>

輸出3

您不應該將日期字符串輸入date()的第二個參數中,它應該是包含Unix時間戳(從mktime()返回的值mktime()的整數。 請參閱date()文檔

$date = mktime(0, 0, 0, 9, 16, 2011);
var_dump(date('N', $date)); // string(1) "5"

使用您的原始代碼:

$date = date( "Y-m-d H:i:s", mktime(0, 0, 0, 9, 16, 2011) );
print_r(date('N', $date));

$date值為"2011-09-16 00:00:00" 這不是整數,當然也不是該日期/時間的Unix時間戳。 因此, date()無法使用該值,並恢復使用1970年1月1日的Unix紀元( 0時間戳)。此外,一條E_NOTICE消息指出“ 在線[文件]中遇到格式錯誤的數值[行]發出。

PHP正在嘗試解釋由date( "Ymd H:i:s", mktime(0, 0, 0, 9, 16, 2011) );生成的字符串date( "Ymd H:i:s", mktime(0, 0, 0, 9, 16, 2011) ); 作為日期,但是PHP使用從紀元起的秒作為數據時間。 您可以像這樣將mktime的結果傳遞給第二個數據函數調用:

$dateTime = mktime(0, 0, 0, 9, 16, 2011)
$date = date("Y-m-d H:i:s",  $dateTime);
echo date('N', $dateTime);
// results in "5"

暫無
暫無

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

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