2017-08-26 98 views
0

這不是一個重複的問題。我正在使用php date函數來格式化日期。使用php的日期格式問題

my date value is:close_date:08/25/2017

這是PHP函數:$close_date = date('Y-m-d', strtotime($close_date));

打印的close_date,結果是:2017-08-26

我的時區是:-5:00和服務器上UTC,所以在格式化日期時間,日期轉換爲UTC日期?

so date只是格式化日期或轉換日期爲每集timezone

幫我解決這個問題。

我不想將我的日期轉換爲任何時區日期,我只是想更改日期的格式。

我輸入的是:2017年8月25日

預期成果是:2017年8月25日

+3

的可能的複製[如何UTC時間值轉換到另一個時區?(https://stackoverflow.com/questions/11883757/how-to-convert-utc-datetime-to-another-timezone) –

+0

不,這不是重複的。 –

+1

請分享您的意見和期望的輸出。 –

回答

1

在情況下,你不希望使用PHP date功能他們嘗試使用DateTime::createFromFormat或編寫一些手動代碼的東西來爆炸$close_date並以您想要的方式使用它。

第1種方法:

使用DateTime::createFromFormat。這將幫助您根據指定的格式解析時間字符串。

$close_date = DateTime::createFromFormat("m/d/Y", $close_date)->format("Y-m-d"); 

第2種方法:

使用一些人工代碼:

$close_date = "08/25/2017"; 
$date_vars = preg_split("#/#", $close_date); 
print_r($date_vars); 

然後使用$date_vars在需要轉換格式像下面的代碼:

$close_date = $date_vars[2]."-".$date_vars[0]."-".$date_vars[1]; 

PS:您也可以使用PHP explode()函數來分解日期值。

+0

這個日期不取決於任何時區? –

+1

對! =)只是根據指定的格式解析一個時間字符串。 –

+0

如果您可能想要任何時區操作,請在末尾使用'setTimezone'。檢查它在這裏:[createFromFormat](http://php.net/manual/en/datetime.createfromformat.php) –

2

您可能希望使用DateTime從所需的格式創建日期對象,並將其轉換爲您需要的格式。

DateTime::createFromFormat("m/d/Y","08/25/2017")->format("Y-m-d"); 
+0

你確定,這個日期不依賴於任何時區? –

+0

@chiragsatapara它只是根據指定的格式解析一個時間字符串。 –

+0

你說你只需要轉換日期,在時區操作的情況下,你也可以使用DateTime類 - DateTime :: setTimeZone(); –