繁体   English   中英

MySQL和PHP-分别存储时如何转换日期,时间和时区

[英]MySQL & PHP - How to convert date, time, and timezone when stored separately

在我们的应用程序中,我们当前正在分别存储日期,时间和时区。 日期字段是可选的,这就是为什么我们将所有内容分开的原因。 对于用户界面,他们将特别选择日期,时间和时区。 当前所有内容都存储在UTC中,时区将是一个ID,该ID引用了另一个查找表。

以我理解和看到的方式,我们只需显示所有这三个值即可显示用户指定的日期和时间,而无需进行任何调整。 如果他们输入的时间是太平洋标准时间(PST)11-30-15 6:00,这就是他们会看到的格式,但是我们认为合适。

  • 到目前为止,有没有人能想到以这种方式进行处理的即时问题?
  • 我应该如何处理时间转换? 在系统中的某个时刻,它需要了解实际时间。 系统时间为UTC,但是如果需要在太平洋标准时间11:00 AM执行一些工作,则需要知道这一点。 我想知道是否存在将时间存储为UTC的问题,但是让他们指定不同的时区。 例如,该时间假定为PST,但存储为UTC。

我将Laravel与Carbon一起使用,只是为了提供更多信息。 任何反馈将是巨大的!

将整个日期,时间和时区存储为单个列。 将用户输入的时间转换为GMT并存储在db中。 当您需要显示用户时间时,请将GMT转换为USERTIMEZONE。

function getGeneralTimeFormat()
{
    return 'Y-m-d H:i:s';
}
function convertDateTimeToGMT($dtime)
{
    date_default_timezone_set('GMT');
    $dtzone = new DateTimeZone(getTimeZoneDateTime($_SESSION['USER_TIMEZONE']));
    $dtime->setTimeZone($dtzone);

    return $dtime->format(getGeneralTimeFormat());
}
function convertGMTToLocalTime($timestamp)
{
    date_default_timezone_set('GMT');
    $dtime = new DateTime($timestamp);
    $dtzone = new DateTimeZone(getTimeZoneDateTime($_SESSION['USER_TIMEZONE']));
    $dtime->setTimeZone($dtzone);

    return $dtime->format(getGeneralTimeFormat());
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM