it-mot-dan-vi.com

Joomla! JFactory :: getDate sai

Theo tài liệu JFactory/getDate$tzOffset giá trị mặc định là 0. Tuy nhiên, ví dụ sau:

$date_default_offset = JFactory::getDate('now');
echo $date_default_offset->toRFC822(true);
echo "<br />";
$date_zero_offset = JFactory::getDate('now', 0);
echo $date_zero_offset->toRFC822(true);

... Cho các kết quả đầu ra khác nhau:

Mon, 13 Oct 2014 18:31:37 +0000
Mon, 13 Oct 2014 19:31:41 +0100

Không phải cả hai ngày giống nhau sao? Những gì khác tôi nên đưa vào tài khoản?

Ngày thực tế là:

echo date("r"); // Mon, 13 Oct 2014 20:40:33 +0200

Điều đó đúng bởi vì máy chủ ở Tây Ban Nha (+1 GMT và +1 Giờ tiết kiệm ánh sáng ban ngày vào mùa hè).

Vấn đề phát sinh khi họ cố gắng điều chỉnh một mô-đun để tính đến thời gian hiện tại ở Quần đảo Canary, đó phải là Mon, 13 Oct 2014 19:31:41 +0100 theo ví dụ đã cho.

Tôi đang sử dụng Joomla! 2.5.27, Múi giờ của máy chủ được đặt thành Canary (GMT + 0).

6
pQB

Mở tệp /libraries/joomla/factory.php Và tìm kiếm hàm getDate():

public static function getDate($time = 'now', $tzOffset = null)

Giá trị mặc định của bù múi giờ ($tzOffset) Là null chứ không phải 0. Có thể do lỗi trong tài liệu Joomla hoặc đó là phiên bản cũ hơn 2.5.

Trong Joomla 3, $date_zero_offset = JFactory::getDate('now', 0); phát sinh lỗi:

DateTime :: __ construc () dự kiến ​​tham số 2 sẽ là DateTimeZone, số nguyên đã cho

Vì vậy, đối với Quần đảo Canary, bạn có thể sử dụng điều này:

$date_zero_offset = JFactory::getDate('now', 'Atlantic/Canary');
4
Farahmand

Có thể là một ý tưởng để có được phần bù từ Cấu hình toàn cầu của bạn như vậy:

$date = JFactory::getDate($input='now', 'UTC');
$tz   = JFactory::getConfig()->getValue('config.offset');
$date->setOffset($tz);

echo $date->toFormat();

Để làm cho cuộc sống dễ dàng hơn một chút và có ít mã hơn, tôi khuyên bạn nên sử dụng JHtml::date

echo JHtml::date($input = 'now', 'm/d/Y', false);

Hi vọng điêu nay co ich

3
Lodder