В документации PHP, список поддерживаемых часовых поясов, UTC
указан дважды:
-
UTC
-
Etc/UTC
Есть ли какая-либо концептуальная разница между этими двумя, или они просто синонимы?
В документации PHP, список поддерживаемых часовых поясов, UTC
указан дважды:
UTC
Etc/UTC
Есть ли какая-либо концептуальная разница между этими двумя, или они просто синонимы?
Etc/UTC
- указанный для часового пояса, отображаемое имя которого UTC
. То есть, это длинные и короткие имена для того же часового пояса, за база данных часовых поясов IANA.
Во-первых, чтобы ответить на вопрос:
Нет разницы между часовыми поясами UTC
и Etc/UTC
.
Etc/UTC
является часовым поясом в базе данных Olson-timezone (tz database), также известной как IANA- timezones-database, в которой все временные зоны соответствуют единому соглашению об именах: Area/Location
.
Поскольку некоторые временные зоны не могут быть отнесены ни к одному Району мира (т.е. к континентам или океанам), была введена специальная область Etc
(Etcetera), Это относится главным образом к административным временным зонам, таким как UTC
.
Таким образом, в соответствии с соглашением об именах универсальное скоординированное время (зона) называется Etc/UTC
в базе данных tz.
Для административных часовых поясов, отличных от UTC (например, GMT+4
, GMT-8
), база данных tz использует знаки стиля POSIX в именах зон. POSIX имеет положительные признаки для зон, которые находятся за Гринвичем (к западу от Гринвича), и отрицательные признаки для зон, которые опережают Гринвич (к востоку от Гринвича).
Знаки в стиле POSIX во временных часах противоположны определению часовых поясов в распространенном в настоящее время и в основном используемом ISO 8601. В формате временной шкалы ISO 8601 отрицательные знаки указывают, что зона находится за UTC (к западу от Гринвича), и положительные признаки указывают, что зона опережает UTC (к востоку от Гринвича). Это то, что стало стандартным использованием в наши дни.
Возможные причины для противоположного определения в POSIX:
ETC/GMT + 4 совпадает с GMT-4.
public static void main(String[] args) {
TimeZone tz = TimeZone.getTimeZone("Etc/GMT-7");
System.out.println(tz);
tz = TimeZone.getTimeZone("GMT+7");
System.out.println(tz);
}
Вы можете проверить его самостоятельно.
Но я не знаю, что означает ETC.