簡體   English   中英

如何更改日期字符串的時區?

[英]How can I change the timezone of a date string?

我想更改以下時間的時區:

2015-08-24 01:30:40

因此它位於America/Los_Angeles時區,但是下面的代碼無法正常工作:

$timedate = date_timezone_set(
              date_create_from_format('Y-m-d h:i:s A', $row[timezone]),
              new DateTimeZone('America/Los Angeles')
            );

$row[timezone]自行成功返回2015-08-24 01:30:40 ,但是當我這樣嘗試更改時區時,它不起作用。

之后的所有PHP代碼都不會運行。 我已經做了很多搜索,但是我不知道如何使它正常工作,所以有人可以告訴我我做錯了什么嗎?

您對date_create_from_format的調用在格式字符串的末尾包含一個A-對我來說似乎很奇怪,因為您的值不以am或pm結尾。 您對h使用似乎也不太可能正確,因為這是一天中的12個小時,這在沒有am / pm指示器的情況下沒有用。 我懷疑您想要的格式

Y-m-d H:i:s

這似乎更適合您的示例字符串...

此外 ,如評論中所述,您的時區ID應該是'America/Los_Angeles'而不是'America/Los Angeles'

我還將在這一行大代碼中分開您的各種調用,以使其更易於診斷-這樣一來,您就可以知道這是解析失敗,而不是與時區有關。 您在這里有三個單獨的操作:

  • 將字符串解析為日期時間
  • 創建一個時區對象
  • 在datetime中設置時區

將這三個代碼放在單獨的語句中將使代碼更易於閱讀和維護。 (特別是,您將能夠獨立找到並糾正這兩個問題...)

暫無
暫無

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

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