2016-12-01 91 views
2

我正在使用此代碼在php中獲取當前的unix時間。今天在特定時間的Unix時間戳

echo time(); 

,它是給我這個結果

1480578383 

如果我轉換這可讀日期,那麼這將是

Thu, 01 Dec 2016 07:46:23 GMT 

好吧,我不希望出現這種情況。我想要的是一個功能,可以給我今天的日期,具體時間是23:00:00。

當我將其轉換爲可讀的日期,那麼它應該是

Thu, 01 Dec 2016 23:00:00 GMT 

「星期四,2016年12月1日」是當前日期。

+1

具體時間是什麼意思?你給的例子和你不想要的例子一樣嗎?請澄清。謝謝! – Ronald

+0

如果您的位置在23:00,請修復unix機器的時鐘。如果在您所在的位置7:46,則該功能運行良好。如果你想在當前的日期和其他任何時間,你可以做'(time()/ 86400)* 86400'去除時間,然後加上'23 * 60 * 60'。 – Holger

+0

'echo(new DateTime(「23:00」)) - > format('r');' –

回答

1

我會做出這樣的假設規範是:

今天獲得在23時00分〇〇秒在當前時區

代碼應該是這樣的:

mktime(23, 0, 0); 

...或:

strtotime('today 23:00:00') 

...或者只是:

strtotime('23:00:00') 

Test code

$time_zones = array(
    'America/Chicago', 
    'GMT', 
    'Europe/Berlin', 
); 
foreach($time_zones as $time_zone){ 
    date_default_timezone_set($time_zone); 
    $t1 = mktime(23, 0, 0); 
    $t2 = strtotime('today 23:00:00'); 
    $t3 = strtotime('23:00:00'); 
    echo date('r', $t1) . '/' . date('r', $t2) . '/' . date('r', $t3) . PHP_EOL; 
} 
Fri, 02 Dec 2016 23:00:00 -0600/Fri, 02 Dec 2016 23:00:00 -0600/Fri, 02 Dec 2016 23:00:00 -0600 
Fri, 02 Dec 2016 23:00:00 +0000/Fri, 02 Dec 2016 23:00:00 +0000/Fri, 02 Dec 2016 23:00:00 +0000 
Fri, 02 Dec 2016 23:00:00 +0100/Fri, 02 Dec 2016 23:00:00 +0100/Fri, 02 Dec 2016 23:00:00 +0100 

mktime()strtotime()手冊頁找到進一步的細節。

+0

我也可以使用它,但它的工作。我必須使用date_default_timezone_set函數來設置時區。有沒有一種方法可以在不使用date_default_timezone_set函數的情況下得到正確的日期。 –

+0

這只是一種**測試代碼正常工作**的方法。每次使用代碼時都不必運行測試。您可以複製並粘貼第一行代碼,並忽略「測試代碼」句子下面的所有內容。對我來說 –

+0

它不能正常工作。它顯示22小時代替23小時 –