偏移量设置中的时区下拉值
Timezone dropdown values in offset settings
我需要一个用户能够 select 一个时区,比方说,一些 "broadcast"。
我只需要在几秒钟内保存 selected 时区的 timezone_offset 值。喜欢:
+03:00 应该像 10800 一样保存到数据库中,或者如果
-03:00 这应该像 -10800
一样保存
所以 + offtests 应该保存为没有加号的秒数
和 - 偏移量应使用减号 -10800
保存
我找到了这个函数:
<?php
/**
* Timezones list with GMT offset
*
* @return array
* @link
*/
function tz_list() {
$zones_array = array();
$timestamp = time();
foreach(timezone_identifiers_list() as $key => $zone) {
date_default_timezone_set($zone);
$zones_array[$key]['zone'] = $zone;
$zones_array[$key]['diff_from_GMT'] = 'UTC/GMT ' . date('P', $timestamp);
}
return $zones_array;
}
?>
所以这个:
<div style="margin-top: 20px;">
<select style="font-family: 'Courier New', Courier, monospace; width: 450px;">
<option value="0">Please, select timezone</option>
<?php foreach(tz_list() as $t) { ?>
<option value="<?php print $t['zone'] ?>">
<?php print $t['diff_from_GMT'] . ' - ' . $t['zone'] ?>
</option>
<?php } ?>
</select>
</div>
给我这个:
<option value="Africa/Abidjan">
UTC/GMT +00:00 - Africa/Abidjan </option>
<option value="Africa/Accra">
UTC/GMT +00:00 - Africa/Accra </option>
<option value="Africa/Addis_Ababa">
UTC/GMT +03:00 - Africa/Addis_Ababa </option>
<option value="Africa/Algiers">
UTC/GMT +01:00 - Africa/Algiers </option>
但我需要的值是 10800 或 -10800,具体取决于 selected 时区。
我的环境是 laravel 5.1*,所以我也有可用的碳,也许这会有所帮助。
所以最基本的问题是,如何将时区偏移格式“+03:00”转换为“10800”,将“-03:00”转换为“-10800”
您可以利用 PHP 的原生 DateTimeZone
对象获取时区的偏移量。这里更新了tz_list()
:
function tz_list() {
$zones_array = array();
$timestamp = time();
$dummy_datetime_object = new DateTime();
foreach(timezone_identifiers_list() as $key => $zone) {
date_default_timezone_set($zone);
$zones_array[$key]['zone'] = $zone;
$zones_array[$key]['diff_from_GMT'] = 'UTC/GMT ' . date('P', $timestamp);
$tz = new DateTimeZone($zone);
$zones_array[$key]['offset'] = $tz->getOffset($dummy_datetime_object);
}
return $zones_array;
}
使用 offset
作为 select
选项的值。
我需要一个用户能够 select 一个时区,比方说,一些 "broadcast"。 我只需要在几秒钟内保存 selected 时区的 timezone_offset 值。喜欢:
+03:00 应该像 10800 一样保存到数据库中,或者如果 -03:00 这应该像 -10800
一样保存所以 + offtests 应该保存为没有加号的秒数 和 - 偏移量应使用减号 -10800
保存我找到了这个函数:
<?php
/**
* Timezones list with GMT offset
*
* @return array
* @link
*/
function tz_list() {
$zones_array = array();
$timestamp = time();
foreach(timezone_identifiers_list() as $key => $zone) {
date_default_timezone_set($zone);
$zones_array[$key]['zone'] = $zone;
$zones_array[$key]['diff_from_GMT'] = 'UTC/GMT ' . date('P', $timestamp);
}
return $zones_array;
}
?>
所以这个:
<div style="margin-top: 20px;">
<select style="font-family: 'Courier New', Courier, monospace; width: 450px;">
<option value="0">Please, select timezone</option>
<?php foreach(tz_list() as $t) { ?>
<option value="<?php print $t['zone'] ?>">
<?php print $t['diff_from_GMT'] . ' - ' . $t['zone'] ?>
</option>
<?php } ?>
</select>
</div>
给我这个:
<option value="Africa/Abidjan">
UTC/GMT +00:00 - Africa/Abidjan </option>
<option value="Africa/Accra">
UTC/GMT +00:00 - Africa/Accra </option>
<option value="Africa/Addis_Ababa">
UTC/GMT +03:00 - Africa/Addis_Ababa </option>
<option value="Africa/Algiers">
UTC/GMT +01:00 - Africa/Algiers </option>
但我需要的值是 10800 或 -10800,具体取决于 selected 时区。
我的环境是 laravel 5.1*,所以我也有可用的碳,也许这会有所帮助。
所以最基本的问题是,如何将时区偏移格式“+03:00”转换为“10800”,将“-03:00”转换为“-10800”
您可以利用 PHP 的原生 DateTimeZone
对象获取时区的偏移量。这里更新了tz_list()
:
function tz_list() {
$zones_array = array();
$timestamp = time();
$dummy_datetime_object = new DateTime();
foreach(timezone_identifiers_list() as $key => $zone) {
date_default_timezone_set($zone);
$zones_array[$key]['zone'] = $zone;
$zones_array[$key]['diff_from_GMT'] = 'UTC/GMT ' . date('P', $timestamp);
$tz = new DateTimeZone($zone);
$zones_array[$key]['offset'] = $tz->getOffset($dummy_datetime_object);
}
return $zones_array;
}
使用 offset
作为 select
选项的值。