将选定的时间和时区转换为设置的时区 [英] Convert selected time and timezone to a set timezone

查看:37
本文介绍了将选定的时间和时区转换为设置的时区的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试制作一个需要 2 个用户输入(一个时区和一个日期 + 时间)并将其转换为预定义时区的小脚本.我真的不知道如何处理这个.请参阅下面的脚本,了解我想要实现的目标.

I'm trying to make a small script that takes 2 user inputs (a timezone and a date + time) and converts it to a predefined timezone. I have really no idea on how to handle this. See my script below for an idea of what I want to achieve.

<?
//I'm so glad I finally made this
$timezones = array(
'Pacific/Midway'    => "(GMT-11:00) Midway Island",
'US/Samoa'          => "(GMT-11:00) Samoa",
'US/Hawaii'         => "(GMT-10:00) Hawaii",
'US/Alaska'         => "(GMT-09:00) Alaska",
'US/Pacific'        => "(GMT-08:00) Pacific Time (US &amp; Canada)",
'America/Tijuana'   => "(GMT-08:00) Tijuana",
'US/Arizona'        => "(GMT-07:00) Arizona",
'US/Mountain'       => "(GMT-07:00) Mountain Time (US &amp; Canada)",
'America/Chihuahua' => "(GMT-07:00) Chihuahua",
'America/Mazatlan'  => "(GMT-07:00) Mazatlan",
'America/Mexico_City' => "(GMT-06:00) Mexico City",
'America/Monterrey' => "(GMT-06:00) Monterrey",
'Canada/Saskatchewan' => "(GMT-06:00) Saskatchewan",
'US/Central'        => "(GMT-06:00) Central Time (US &amp; Canada)",
'US/Eastern'        => "(GMT-05:00) Eastern Time (US &amp; Canada)",
'US/East-Indiana'   => "(GMT-05:00) Indiana (East)",
'America/Bogota'    => "(GMT-05:00) Bogota",
'America/Lima'      => "(GMT-05:00) Lima",
'America/Caracas'   => "(GMT-04:30) Caracas",
'Canada/Atlantic'   => "(GMT-04:00) Atlantic Time (Canada)",
'America/La_Paz'    => "(GMT-04:00) La Paz",
'America/Santiago'  => "(GMT-04:00) Santiago",
'Canada/Newfoundland'  => "(GMT-03:30) Newfoundland",
'America/Buenos_Aires' => "(GMT-03:00) Buenos Aires",
'Greenland'         => "(GMT-03:00) Greenland",
'Atlantic/Stanley'  => "(GMT-02:00) Stanley",
'Atlantic/Azores'   => "(GMT-01:00) Azores",
'Atlantic/Cape_Verde' => "(GMT-01:00) Cape Verde Is.",
'Africa/Casablanca' => "(GMT) Casablanca",
'Europe/Dublin'     => "(GMT) Dublin",
'Europe/Lisbon'     => "(GMT) Lisbon",
'Europe/London'     => "(GMT) London",
'Africa/Monrovia'   => "(GMT) Monrovia",
'Europe/Amsterdam'  => "(GMT+01:00) Amsterdam",
'Europe/Belgrade'   => "(GMT+01:00) Belgrade",
'Europe/Berlin'     => "(GMT+01:00) Berlin",
'Europe/Bratislava' => "(GMT+01:00) Bratislava",
'Europe/Brussels'   => "(GMT+01:00) Brussels",
'Europe/Budapest'   => "(GMT+01:00) Budapest",
'Europe/Copenhagen' => "(GMT+01:00) Copenhagen",
'Europe/Ljubljana'  => "(GMT+01:00) Ljubljana",
'Europe/Madrid'     => "(GMT+01:00) Madrid",
'Europe/Paris'      => "(GMT+01:00) Paris",
'Europe/Prague'     => "(GMT+01:00) Prague",
'Europe/Rome'       => "(GMT+01:00) Rome",
'Europe/Sarajevo'   => "(GMT+01:00) Sarajevo",
'Europe/Skopje'     => "(GMT+01:00) Skopje",
'Europe/Stockholm'  => "(GMT+01:00) Stockholm",
'Europe/Vienna'     => "(GMT+01:00) Vienna",
'Europe/Warsaw'     => "(GMT+01:00) Warsaw",
'Europe/Zagreb'     => "(GMT+01:00) Zagreb",
'Europe/Athens'     => "(GMT+02:00) Athens",
'Europe/Bucharest'  => "(GMT+02:00) Bucharest",
'Africa/Cairo'      => "(GMT+02:00) Cairo",
'Africa/Harare'     => "(GMT+02:00) Harare",
'Europe/Helsinki'   => "(GMT+02:00) Helsinki",
'Europe/Istanbul'   => "(GMT+02:00) Istanbul",
'Asia/Jerusalem'    => "(GMT+02:00) Jerusalem",
'Europe/Kiev'       => "(GMT+02:00) Kyiv",
'Europe/Minsk'      => "(GMT+02:00) Minsk",
'Europe/Riga'       => "(GMT+02:00) Riga",
'Europe/Sofia'      => "(GMT+02:00) Sofia",
'Europe/Tallinn'    => "(GMT+02:00) Tallinn",
'Europe/Vilnius'    => "(GMT+02:00) Vilnius",
'Asia/Baghdad'      => "(GMT+03:00) Baghdad",
'Asia/Kuwait'       => "(GMT+03:00) Kuwait",
'Europe/Moscow'     => "(GMT+03:00) Moscow",
'Africa/Nairobi'    => "(GMT+03:00) Nairobi",
'Asia/Riyadh'       => "(GMT+03:00) Riyadh",
'Europe/Volgograd'  => "(GMT+03:00) Volgograd",
'Asia/Tehran'       => "(GMT+03:30) Tehran",
'Asia/Baku'         => "(GMT+04:00) Baku",
'Asia/Muscat'       => "(GMT+04:00) Muscat",
'Asia/Tbilisi'      => "(GMT+04:00) Tbilisi",
'Asia/Yerevan'      => "(GMT+04:00) Yerevan",
'Asia/Kabul'        => "(GMT+04:30) Kabul",
'Asia/Yekaterinburg' => "(GMT+05:00) Ekaterinburg",
'Asia/Karachi'      => "(GMT+05:00) Karachi",
'Asia/Tashkent'     => "(GMT+05:00) Tashkent",
'Asia/Kolkata'      => "(GMT+05:30) Kolkata",
'Asia/Kathmandu'    => "(GMT+05:45) Kathmandu",
'Asia/Almaty'       => "(GMT+06:00) Almaty",
'Asia/Dhaka'        => "(GMT+06:00) Dhaka",
'Asia/Novosibirsk'  => "(GMT+06:00) Novosibirsk",
'Asia/Bangkok'      => "(GMT+07:00) Bangkok",
'Asia/Jakarta'      => "(GMT+07:00) Jakarta",
'Asia/Krasnoyarsk'  => "(GMT+07:00) Krasnoyarsk",
'Asia/Chongqing'    => "(GMT+08:00) Chongqing",
'Asia/Hong_Kong'    => "(GMT+08:00) Hong Kong",
'Asia/Irkutsk'      => "(GMT+08:00) Irkutsk",
'Asia/Kuala_Lumpur' => "(GMT+08:00) Kuala Lumpur",
'Australia/Perth'   => "(GMT+08:00) Perth",
'Asia/Singapore'    => "(GMT+08:00) Singapore",
'Asia/Taipei'       => "(GMT+08:00) Taipei",
'Asia/Ulaanbaatar'  => "(GMT+08:00) Ulaan Bataar",
'Asia/Urumqi'       => "(GMT+08:00) Urumqi",
'Asia/Seoul'        => "(GMT+09:00) Seoul",
'Asia/Tokyo'        => "(GMT+09:00) Tokyo",
'Asia/Yakutsk'      => "(GMT+09:00) Yakutsk",
'Australia/Adelaide' => "(GMT+09:30) Adelaide",
'Australia/Darwin'  => "(GMT+09:30) Darwin",
'Australia/Brisbane' => "(GMT+10:00) Brisbane",
'Australia/Canberra' => "(GMT+10:00) Canberra",
'Pacific/Guam'      => "(GMT+10:00) Guam",
'Australia/Hobart'  => "(GMT+10:00) Hobart",
'Australia/Melbourne' => "(GMT+10:00) Melbourne",
'Pacific/Port_Moresby' => "(GMT+10:00) Port Moresby",
'Australia/Sydney'  => "(GMT+10:00) Sydney",
'Asia/Vladivostok'  => "(GMT+10:00) Vladivostok",
'Asia/Magadan'      => "(GMT+11:00) Magadan",
'Pacific/Auckland'  => "(GMT+12:00) Auckland",
'Pacific/Fiji'      => "(GMT+12:00) Fiji",
'Asia/Kamchatka'    => "(GMT+12:00) Kamchatka",
);
//So happy I finished making that
if(!$_POST){
?>
<form method="post">
<input type="text" id="datepicker" name="date" />
<select name="zone">
<?

foreach($timezones as $key => $value){
echo "<option name=\"zone\" value=\"$key\">$value</option>";
}
?>
</select>
<input type="submit" value="Convert" />
</form>
<?
}
if($_POST){
$date = $_POST['date']; //comes in format "m/d/Y h:i"
$zone = $_POST['zone']; //is in php format e.g. "Pacific/Auckland"

echo "You selected ".$date." in the timezone ".$zone."<br>";
echo "The time in New Zealand is ".$result." which is GMT+12";
}
?>

新代码

<?
//I'm so glad I finally made this
$timezones = array(
'Pacific/Midway'    => "(GMT-11:00) Midway Island",
'US/Samoa'          => "(GMT-11:00) Samoa",
'US/Hawaii'         => "(GMT-10:00) Hawaii",
'US/Alaska'         => "(GMT-09:00) Alaska",
'US/Pacific'        => "(GMT-08:00) Pacific Time (US &amp; Canada)",
'America/Tijuana'   => "(GMT-08:00) Tijuana",
'US/Arizona'        => "(GMT-07:00) Arizona",
'US/Mountain'       => "(GMT-07:00) Mountain Time (US &amp; Canada)",
'America/Chihuahua' => "(GMT-07:00) Chihuahua",
'America/Mazatlan'  => "(GMT-07:00) Mazatlan",
'America/Mexico_City' => "(GMT-06:00) Mexico City",
'America/Monterrey' => "(GMT-06:00) Monterrey",
'Canada/Saskatchewan' => "(GMT-06:00) Saskatchewan",
'US/Central'        => "(GMT-06:00) Central Time (US &amp; Canada)",
'US/Eastern'        => "(GMT-05:00) Eastern Time (US &amp; Canada)",
'US/East-Indiana'   => "(GMT-05:00) Indiana (East)",
'America/Bogota'    => "(GMT-05:00) Bogota",
'America/Lima'      => "(GMT-05:00) Lima",
'America/Caracas'   => "(GMT-04:30) Caracas",
'Canada/Atlantic'   => "(GMT-04:00) Atlantic Time (Canada)",
'America/La_Paz'    => "(GMT-04:00) La Paz",
'America/Santiago'  => "(GMT-04:00) Santiago",
'Canada/Newfoundland'  => "(GMT-03:30) Newfoundland",
'America/Buenos_Aires' => "(GMT-03:00) Buenos Aires",
'Greenland'         => "(GMT-03:00) Greenland",
'Atlantic/Stanley'  => "(GMT-02:00) Stanley",
'Atlantic/Azores'   => "(GMT-01:00) Azores",
'Atlantic/Cape_Verde' => "(GMT-01:00) Cape Verde Is.",
'Africa/Casablanca' => "(GMT) Casablanca",
'Europe/Dublin'     => "(GMT) Dublin",
'Europe/Lisbon'     => "(GMT) Lisbon",
'Europe/London'     => "(GMT) London",
'Africa/Monrovia'   => "(GMT) Monrovia",
'Europe/Amsterdam'  => "(GMT+01:00) Amsterdam",
'Europe/Belgrade'   => "(GMT+01:00) Belgrade",
'Europe/Berlin'     => "(GMT+01:00) Berlin",
'Europe/Bratislava' => "(GMT+01:00) Bratislava",
'Europe/Brussels'   => "(GMT+01:00) Brussels",
'Europe/Budapest'   => "(GMT+01:00) Budapest",
'Europe/Copenhagen' => "(GMT+01:00) Copenhagen",
'Europe/Ljubljana'  => "(GMT+01:00) Ljubljana",
'Europe/Madrid'     => "(GMT+01:00) Madrid",
'Europe/Paris'      => "(GMT+01:00) Paris",
'Europe/Prague'     => "(GMT+01:00) Prague",
'Europe/Rome'       => "(GMT+01:00) Rome",
'Europe/Sarajevo'   => "(GMT+01:00) Sarajevo",
'Europe/Skopje'     => "(GMT+01:00) Skopje",
'Europe/Stockholm'  => "(GMT+01:00) Stockholm",
'Europe/Vienna'     => "(GMT+01:00) Vienna",
'Europe/Warsaw'     => "(GMT+01:00) Warsaw",
'Europe/Zagreb'     => "(GMT+01:00) Zagreb",
'Europe/Athens'     => "(GMT+02:00) Athens",
'Europe/Bucharest'  => "(GMT+02:00) Bucharest",
'Africa/Cairo'      => "(GMT+02:00) Cairo",
'Africa/Harare'     => "(GMT+02:00) Harare",
'Europe/Helsinki'   => "(GMT+02:00) Helsinki",
'Europe/Istanbul'   => "(GMT+02:00) Istanbul",
'Asia/Jerusalem'    => "(GMT+02:00) Jerusalem",
'Europe/Kiev'       => "(GMT+02:00) Kyiv",
'Europe/Minsk'      => "(GMT+02:00) Minsk",
'Europe/Riga'       => "(GMT+02:00) Riga",
'Europe/Sofia'      => "(GMT+02:00) Sofia",
'Europe/Tallinn'    => "(GMT+02:00) Tallinn",
'Europe/Vilnius'    => "(GMT+02:00) Vilnius",
'Asia/Baghdad'      => "(GMT+03:00) Baghdad",
'Asia/Kuwait'       => "(GMT+03:00) Kuwait",
'Europe/Moscow'     => "(GMT+03:00) Moscow",
'Africa/Nairobi'    => "(GMT+03:00) Nairobi",
'Asia/Riyadh'       => "(GMT+03:00) Riyadh",
'Europe/Volgograd'  => "(GMT+03:00) Volgograd",
'Asia/Tehran'       => "(GMT+03:30) Tehran",
'Asia/Baku'         => "(GMT+04:00) Baku",
'Asia/Muscat'       => "(GMT+04:00) Muscat",
'Asia/Tbilisi'      => "(GMT+04:00) Tbilisi",
'Asia/Yerevan'      => "(GMT+04:00) Yerevan",
'Asia/Kabul'        => "(GMT+04:30) Kabul",
'Asia/Yekaterinburg' => "(GMT+05:00) Ekaterinburg",
'Asia/Karachi'      => "(GMT+05:00) Karachi",
'Asia/Tashkent'     => "(GMT+05:00) Tashkent",
'Asia/Kolkata'      => "(GMT+05:30) Kolkata",
'Asia/Kathmandu'    => "(GMT+05:45) Kathmandu",
'Asia/Almaty'       => "(GMT+06:00) Almaty",
'Asia/Dhaka'        => "(GMT+06:00) Dhaka",
'Asia/Novosibirsk'  => "(GMT+06:00) Novosibirsk",
'Asia/Bangkok'      => "(GMT+07:00) Bangkok",
'Asia/Jakarta'      => "(GMT+07:00) Jakarta",
'Asia/Krasnoyarsk'  => "(GMT+07:00) Krasnoyarsk",
'Asia/Chongqing'    => "(GMT+08:00) Chongqing",
'Asia/Hong_Kong'    => "(GMT+08:00) Hong Kong",
'Asia/Irkutsk'      => "(GMT+08:00) Irkutsk",
'Asia/Kuala_Lumpur' => "(GMT+08:00) Kuala Lumpur",
'Australia/Perth'   => "(GMT+08:00) Perth",
'Asia/Singapore'    => "(GMT+08:00) Singapore",
'Asia/Taipei'       => "(GMT+08:00) Taipei",
'Asia/Ulaanbaatar'  => "(GMT+08:00) Ulaan Bataar",
'Asia/Urumqi'       => "(GMT+08:00) Urumqi",
'Asia/Seoul'        => "(GMT+09:00) Seoul",
'Asia/Tokyo'        => "(GMT+09:00) Tokyo",
'Asia/Yakutsk'      => "(GMT+09:00) Yakutsk",
'Australia/Adelaide' => "(GMT+09:30) Adelaide",
'Australia/Darwin'  => "(GMT+09:30) Darwin",
'Australia/Brisbane' => "(GMT+10:00) Brisbane",
'Australia/Canberra' => "(GMT+10:00) Canberra",
'Pacific/Guam'      => "(GMT+10:00) Guam",
'Australia/Hobart'  => "(GMT+10:00) Hobart",
'Australia/Melbourne' => "(GMT+10:00) Melbourne",
'Pacific/Port_Moresby' => "(GMT+10:00) Port Moresby",
'Australia/Sydney'  => "(GMT+10:00) Sydney",
'Asia/Vladivostok'  => "(GMT+10:00) Vladivostok",
'Asia/Magadan'      => "(GMT+11:00) Magadan",
'Pacific/Auckland'  => "(GMT+12:00) Auckland",
'Pacific/Fiji'      => "(GMT+12:00) Fiji",
'Asia/Kamchatka'    => "(GMT+12:00) Kamchatka",
);
//So happy I finished making that
if(!$_POST){
?>
<form method="post">
<input type="text" id="datepicker" name="date" />
<select name="zone">
<?

foreach($timezones as $key => $value){
echo "<option name=\"zone\" value=\"$key\">$value</option>";
}
?>
</select>
<input type="submit" value="Convert" />
</form>
<?
}
if($_POST){
$date = $_POST['date']; //comes in format "m/d/Y h:i"
$zone = $_POST['zone']; //is in php format e.g. "Pacific/Auckland"



try {
$date = new DateTime($_POST['date'], new DateTimeZone($_POST['zone']));
$date->setTimezone(new DateTimeZone('Pacific/Auckland'));
$result = $date->format('m/d/Y H:i');
} catch (Exception $e) {
echo $e->getMessage();
}
echo $result;




}
?>

推荐答案

try {
    $date = new DateTime($_POST['date'], new DateTimeZone($_POST['zone']));
    $date->setTimezone(new DateTimeZone('Pacific/Auckland'));
    $result = $date->format('m/d/Y h:i');
} catch (Exception $e) {
    echo $e->getMessage();
}

这篇关于将选定的时间和时区转换为设置的时区的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆