PHP获取用户看视频的时长,php – 仅用偏移量获取用户选择的时区日期时间

在我的网站上,每个用户在注册时都必须选择他们的时区.用户数据库表有一个名为timezone的列,其值是以下数组中的键之一:

$zones = array(

'UM12' => -12,

'UM11' => -11,

'UM10' => -10,

'UM95' => -9.5,

'UM9' => -9,

'UM8' => -8,

'UM7' => -7,

'UM6' => -6,

'UM5' => -5,

'UM45' => -4.5,

'UM4' => -4,

'UM35' => -3.5,

'UM3' => -3,

'UM2' => -2,

'UM1' => -1,

'UTC' => 0,

'UP1' => +1,

'UP2' => +2,

'UP3' => +3,

'UP35' => +3.5,

'UP4' => +4,

'UP45' => +4.5,

'UP5' => +5,

'UP55' => +5.5,

'UP575' => +5.75,

'UP6' => +6,

'UP65' => +6.5,

'UP7' => +7,

'UP8' => +8,

'UP875' => +8.75,

'UP9' => +9,

'UP95' => +9.5,

'UP10' => +10,

'UP105' => +10.5,

'UP11' => +11,

'UP115' => +11.5,

'UP12' => +12,

'UP1275' => +12.75,

'UP13' => +13,

'UP14' => +14

);

此外,Codeigniter为我提供了以下数组,但这没有太大帮助,因为它的值不能直接用于在PHP中创建DateTimeZone对象.

$lang['UM12'] = '(UTC -12:00) Baker/Howland Island';

$lang['UM11'] = '(UTC -11:00) Samoa Time Zone, Niue';

$lang['UM10'] = '(UTC -10:00) Hawaii-Aleutian Standard Time, Cook Islands, Tahiti';

$lang['UM95'] = '(UTC -9:30) Marquesas Islands';

$lang['UM9'] = '(UTC -9:00) Alaska Standard Time, Gambier Islands';

$lang['UM8'] = '(UTC -8:00) Pacific Standard Time, Clipperton Island';

$lang['UM7'] = '(UTC -7:00) Mountain Standard Time';

$lang['UM6'] = '(UTC -6:00) Central Standard Time';

$lang['UM5'] = '(UTC -5:00) Eastern Standard Time, Western Caribbean Standard Time';

$lang['UM45'] = '(UTC -4:30) Venezuelan Standard Time';

$lang['UM4'] = '(UTC -4:00) Atlantic Standard Time, Eastern Caribbean Standard Time';

$lang['UM35'] = '(UTC -3:30) Newfoundland Standard Time';

$lang['UM3'] = '(UTC -3:00) Argentina, Brazil, French Guiana, Uruguay';

$lang['UM2'] = '(UTC -2:00) South Georgia/South Sandwich Islands';

$lang['UM1'] = '(UTC -1:00) Azores, Cape Verde Islands';

$lang['UTC'] = '(UTC) Greenwich Mean Time, Western European Time';

$lang['UP1'] = '(UTC +1:00) Central European Time, West Africa Time';

$lang['UP2'] = '(UTC +2:00) Central Africa Time, Eastern European Time, Kaliningrad Time';

$lang['UP3'] = '(UTC +3:00) Moscow Time, East Africa Time';

$lang['UP35'] = '(UTC +3:30) Iran Standard Time';

$lang['UP4'] = '(UTC +4:00) Azerbaijan Standard Time, Samara Time';

$lang['UP45'] = '(UTC +4:30) Afghanistan';

$lang['UP5'] = '(UTC +5:00) Pakistan Standard Time, Yekaterinburg Time';

$lang['UP55'] = '(UTC +5:30) Indian Standard Time, Sri Lanka Time';

$lang['UP575'] = '(UTC +5:45) Nepal Time';

$lang['UP6'] = '(UTC +6:00) Bangladesh Standard Time, Bhutan Time, Omsk Time';

$lang['UP65'] = '(UTC +6:30) Cocos Islands, Myanmar';

$lang['UP7'] = '(UTC +7:00) Krasnoyarsk Time, Cambodia, Laos, Thailand, Vietnam';

$lang['UP8'] = '(UTC +8:00) Australian Western Standard Time, Beijing Time, Irkutsk Time';

$lang['UP875'] = '(UTC +8:45) Australian Central Western Standard Time';

$lang['UP9'] = '(UTC +9:00) Japan Standard Time, Korea Standard Time, Yakutsk Time';

$lang['UP95'] = '(UTC +9:30) Australian Central Standard Time';

$lang['UP10'] = '(UTC +10:00) Australian Eastern Standard Time, Vladivostok Time';

$lang['UP105'] = '(UTC +10:30) Lord Howe Island';

$lang['UP11'] = '(UTC +11:00) Magadan Time, Solomon Islands, Vanuatu';

$lang['UP115'] = '(UTC +11:30) Norfolk Island';

$lang['UP12'] = '(UTC +12:00) Fiji, Gilbert Islands, Kamchatka Time, New Zealand Standard Time';

$lang['UP1275'] = '(UTC +12:45) Chatham Islands Standard Time';

$lang['UP13'] = '(UTC +13:00) Phoenix Islands Time, Tonga';

$lang['UP14'] = '(UTC +14:00) Line Islands';

目前,Web服务器将default_timezone设置为UTC,并且数据库中处于mysql datetime格式的所有日期时间值都存储在此时区中.

因此,对于根据用户的时区正确显示的日期时间,我需要一种方法来进行转换.这是我到目前为止所得到的:

$timezone_offset=$zones[$user_row->timezone];

$utc_timestamp=strtotime($user_row->registered_on);

如您所见,我需要一个以某种方式接受这两个参数的函数,并在用户的时区中给出日期时间.但我仍然无法弄清楚哪些功能对我的情况有用.

有人会介意给我一些建议吗?

非常感谢大家.

解决方法:

$date = new DateTime('2000-01-01', new DateTimeZone('Pacific/Nauru'));

echo $date->format('Y-m-d H:i:sP') . "\n";

$date->setTimezone(new DateTimeZone('Pacific/Chatham'));

echo $date->format('Y-m-d H:i:sP') . "\n";

?>

gmt_to_local()

Takes a Unix timestamp (referenced to

GMT) as input, and converts it to a

localized timestamp based on the

timezone and Daylight Saving time

submitted. Example: $timestamp =

‘1140153693’; $timezone = ‘UM8’;

$daylight_saving = TRUE;

echo gmt_to_local($timestamp, $timezone, $daylight_saving);

标签:php,timezone,datetime,time,codeigniter

来源: https://codeday.me/bug/20190704/1382102.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值