我正在使用的现有代码在最后提供了一个下拉列表 用户选择时区。
我的目标是将选择限制在 1.美国 和 一种。东方期权 值America / New_York b。选件中心 价值美国/芝加哥 C。 Option Mountain DST 价值美国/丹佛 d。 Option山无DST 价值美国/凤凰城 e。期权太平洋 值America / Los_Angeles
通过简单地注释掉代码,将其范围缩小到美国很容易。 最终将其缩小到5个时区超出了我的薪水等级。
有什么建议吗?
$regions = [
# 'Africa' => DateTimeZone::AFRICA,
'America' => DateTimeZone::AMERICA,
# 'Antarctica' => DateTimeZone::ANTARCTICA,
# 'Aisa' => DateTimeZone::ASIA,
# 'Atlantic' => DateTimeZone::ATLANTIC,
# 'Europe' => DateTimeZone::EUROPE,
# 'Indian' => DateTimeZone::INDIAN,
# 'Pacific' => DateTimeZone::PACIFIC
];
$timezones = [];
foreach ($regions as $name => $mask) {
$zones = DateTimeZone::listIdentifiers($mask);
foreach ($zones as $timezone) {
$timezones[$name][$timezone] = $timezone;
}
}
$actualTimezone = JFactory::getSession()->get('user-timezone', $displayData['dateHelper']->getDate()->getTimezone()->getName(), 'Calendar');
?>
<form action="<?php echo JUri::base(); ?>" method="get" class="dp-timezone dp-form">
<span class="dp-timezone__label">
<?php echo $displayData['translator']->translate('COM_CALENDAR_CHOOSE_TIMEZONE'); ?>:
</span>
<select name="tz" class="dp-select dp-timezone__select">
<option value="UTC"<?php $actualTimezone == 'UTC' ? ' selected' : ''; ?>>
<?php echo $displayData['translator']->translate('JLIB_FORM_VALUE_TIMEZONE_UTC'); ?>
</option>
<?php foreach ($timezones as $region => $list) { ?>
<?php foreach ($list as $timezone => $name) { ?>
<option value="<?php echo $timezone; ?>"<?php echo $actualTimezone == $timezone ? ' selected' : ''; ?>>
<?php echo $displayData['translator']->translate($name); ?>
</option>
<?php } ?>
<?php } ?>
</select>
<input type="hidden" name="task" value="profile.tz" class="dp-input dp-input-hidden">
<input type="hidden" name="option" value="com_calendar" class="dp-input dp-input-hidden">
<input type="hidden" name="view" value="profile" class="dp-input dp-input-hidden">
<input type="hidden" name="return" value="<?php echo base64_encode(JUri::getInstance()->toString()); ?>" class="dp-input dp-input-hidden">
</form>