【发布时间】:2012-12-07 19:26:09
【问题描述】:
当用户注册我的网站时,他们会以这种格式输入他们每周的可用性:
星期一 1300 到 1400 周一 2100 至 2200
星期二 1200 到 1300 周二 1400 至 1500
等等。
他们还根据选择菜单(例如 America/Los_Angeles)指示他们的时区。
我希望根据访问设置了不同时区的个人资料的用户的时区来调整这些时间。最好的解决方案是什么?
【问题讨论】:
当用户注册我的网站时,他们会以这种格式输入他们每周的可用性:
星期一 1300 到 1400 周一 2100 至 2200
星期二 1200 到 1300 周二 1400 至 1500
等等。
他们还根据选择菜单(例如 America/Los_Angeles)指示他们的时区。
我希望根据访问设置了不同时区的个人资料的用户的时区来调整这些时间。最好的解决方案是什么?
【问题讨论】:
将他们的可用性存储为从 EPOCH 开始的秒数,然后根据用户的时区将其转换为适当的时间。
【讨论】:
在字段值中存储 UTC 和所选时区之间的差异
<option value="3">UTC+3 timezone</option>
<option value="-5">UTC-5 timezone</option>
然后将其添加或减少到小时的输出。 如果这种差异提供否定结果或超过 24 小时 - 设置一周的下一天或前一天。
我认为你真的不需要 unixtime 这样的时间间隔。
【讨论】:
我实际上最终这样做了:
<?php while ($ava = mysql_fetch_array($avail_action)) {
date_default_timezone_set($profile_owners_timezone);
$timestamp_from = strtotime($ava['time_from']);
$timestamp_to = strtotime($ava['time_to']);
date_default_timezone_set($_SESSION['timezone']);
$time_from = date("g:i A", $timestamp_from);
$time_to = date("g:i A", $timestamp_to); ?>
基本上我得到了他/她输入的个人资料“所有者”时区,将时区设置为该时区,然后将时区设置为“查看者”时区并将变量设置为该时区。
感谢大家的帮助!
【讨论】: