我想在PHP中使用Paul Eggert格式(America/New_York
)獲取今天的日期?獲取當前日期,在PHP中給出一個時區?
回答
第一設置默認的時區和獲取日期屆時,日期將在時區指定:
<?php
date_default_timezone_set('America/New_York');
$date= date('m-d-Y') ;
?>
http://php.net/manual/en/function.date-default-timezone-set.php
<?php
date_default_timezone_set('GMT-5');//Set New York timezone
$today = date("F j, Y")
?>
如果你有機會獲得PHP 5.3中,intl extension是非常好的做這樣的事情。
下面是手動的例子:
$fmt = new IntlDateFormatter("en_US" ,IntlDateFormatter::FULL, IntlDateFormatter::FULL,
'America/Los_Angeles',IntlDateFormatter::GREGORIAN );
$fmt->format(0); //0 for current time/date
在你的情況,你可以這樣做:
$fmt = new IntlDateFormatter("en_US" ,IntlDateFormatter::FULL, IntlDateFormatter::FULL,
'America/New_York');
$fmt->format($datetime); //where $datetime may be a DateTime object, an integer representing a Unix timestamp value (seconds since epoch, UTC) or an array in the format output by localtime().
正如你可以設置一個時區,如America/New_York
,這比使用一個更好格林威治標準時間或UTC時間偏差,因爲這也考慮了日光節約時間。
Finaly,因爲intl擴展使用ICU數據,當涉及到創建自己的日期/時間格式時,它包含許多非常有用的功能。
其他的答案設置時區爲所有日期系統。如果您想爲您的用戶支持多個時區,這並不總是奏效。
這裏的短版本:
<?php
$date = new DateTime("now", new DateTimeZone('America/New_York'));
echo $date->format('Y-m-d H:i:s');
作品在PHP> = 5.2.0
列表支持時區:php.net/manual/en/timezones.php
下面是與現有的時間及地點版本用戶設置的時區
<?php
$usersTimezone = 'America/New_York';
$date = new DateTime('Thu, 31 Mar 2011 02:05:59 GMT', new DateTimeZone($usersTimezone));
echo $date->format('Y-m-d H:i:s');
這裏是一個更詳細的版本,顯示過程稍微清楚
<?php
// Date for a specific date/time:
$date = new DateTime('Thu, 31 Mar 2011 02:05:59 GMT');
// Output date (as-is)
echo $date->format('l, F j Y g:i:s A');
// Output line break (for testing)
echo "\n<br />\n";
// Example user timezone (to show it can be used dynamically)
$usersTimezone = 'America/New_York';
// Convert timezone
$tz = new DateTimeZone($usersTimezone);
$date->setTimeZone($tz);
// Output date after
echo $date->format('l, F j Y g:i:s A');
庫
- Carbon - 一個非常受歡迎的最新的圖書館。
- Chronos - Carbon的替代品專注於不變性。請參閱下面爲什麼這很重要。
- jenssegers/date - Carbon的擴展,增加了多語言支持。
我確定有一些其他庫可用,但這些是我熟悉的一些。
獎金課:永恆Date對象
當你在這裏,讓我救你將來頭痛。假設你想從今天開始計算1周,從今天開始計算2周。你可能會喜歡寫一些代碼:
<?php
// Create a datetime (now, in this case 2017-Feb-11)
$today = new DateTime();
echo $today->format('Y-m-d') . "\n<br>";
echo "---\n<br>";
$oneWeekFromToday = $today->add(new DateInterval('P7D'));
$twoWeeksFromToday = $today->add(new DateInterval('P14D'));
echo $today->format('Y-m-d') . "\n<br>";
echo $oneWeekFromToday->format('Y-m-d') . "\n<br>";
echo $twoWeeksFromToday->format('Y-m-d') . "\n<br>";
echo "\n<br>";
輸出:
2017-02-11
---
2017-03-04
2017-03-04
2017-03-04
Hmmmm ...這並不完全是我們想要的。在PHP中修改傳統的DateTime
對象不僅會返回更新的日期,還會修改原始對象。
這是DateTimeImmutable
進來
$today = new DateTimeImmutable();
echo $today->format('Y-m-d') . "\n<br>";
echo "---\n<br>";
$oneWeekFromToday = $today->add(new DateInterval('P7D'));
$twoWeeksFromToday = $today->add(new DateInterval('P14D'));
echo $today->format('Y-m-d') . "\n<br>";
echo $oneWeekFromToday->format('Y-m-d') . "\n<br>";
echo $twoWeeksFromToday->format('Y-m-d') . "\n<br>";
輸出:
2017-02-11
---
2017-02-11
2017-02-18
2017-02-25
在第二個例子中,我們得到了我們的預期回來的日期。通過使用DateTimeImmutable
而不是DateTime
,我們可以防止意外狀態突變並防止潛在的錯誤。
欣賞答案@DesignerGuy,但這裏是一個*適當的*支持時區列表:http://php.net/manual/en/timezones.php –
謝謝@ChrisHarrison。剛更新了答案。 – DesignerGuy
這應該是公認的答案,正是我所期待的。謝謝! – Brett
我創造了一些簡單的功能,你可以用時間轉換爲任何時區:
function convertTimeToLocal($datetime,$timezone='Europe/Dublin') {
$given = new DateTime($datetime, new DateTimeZone("UTC"));
$given->setTimezone(new DateTimeZone($timezone));
$output = $given->format("Y-m-d"); //can change as per your requirement
return $output;
}
- 1. 如何獲取當地時區的當前日期和時間?
- 2. php在我的時區獲取日期
- 3. 獲取當前日期和前一天
- 4. 如何在php中獲取當前日期和時間
- 5. 從另一個時區獲取日期
- 6. 獲取特定時區中的當前日期django
- 7. PHP獲取日期的當前月份
- 8. 如何獲取當前日期/時間作爲日期對象在PHP中
- 9. mySQL獲取下一個和前一個日期到當前行的日期
- 10. 在印度時區的另一個時區獲取日期
- 11. 在SQL Server中獲取當前日期?
- 12. 在java中獲取當前日期
- 13. 在Swift 3中獲取當前日期?
- 14. 如何從當前日期前一個月獲取日期,當前日期是一月?
- 15. 無時間獲取當前日期
- 16. 獲取當前系統日期時間
- 17. XSLT 1.0獲取當前日期時間
- 18. 獲取當前日期和時間
- 19. 獲取當前時間/日期purescript
- 20. 獲取當前ISO8601日期/時間戳
- 21. 獲取其當前日期時間
- 22. 獲取當前時間沒有日期
- 23. Java JodaTime獲取當前日期時間
- 24. 從Calender獲取當前日期給出錯誤結果
- 25. Php:獲取當前區域的時間
- 26. PHP - 按時區獲取日期
- 27. 在JSP頁面中獲取當前區域日期格式
- 28. 獲取另一個時區的日期時間,而不考慮當地時區
- 29. 從當前日期獲取一年
- 30. JavaScript獲取當前日期而不考慮時區
注意,使用'date_default_timezone_set()'設置它()'後點日期的'所有使用。查看我的答案,瞭解如何管理多個時區的示例。 – DesignerGuy
目前不好的做法,如果你只是想在該時區獲得1日期,請參閱DesignerGuy的答案以獲得更豐富的解決方案。 –
有很好的選擇時區的一般方法。 – Zan