【问题标题】:Timezone guide?时区指南?
【发布时间】:2014-05-15 12:06:21
【问题描述】:

所以这里的事情是我不知道也不知道如何在互联网上搜索它。 所以,我将开始解释:

-网站(主机)位于具有 UTC 时区的服务器中
-I(管理员)位于 CEST 时区
-当我(管理员)创建具有特定日期的事件(让我们 X;格式 YYYY-MM-DD)时,我想要的是该事件在 CEST 的 X 天 18:00 不可​​用,但在那之前如果您知道我的意思,活动已“开启”,客户可以看到。
- 在 X 日的 18:00 之后,用户(客户)将无法看到更多的事件,然后“传递”到下一个日期(让我们 Y)事件。

我不知道如何在互联网上搜索此内容,因此,请提供一些指南。

语言:SQL

【问题讨论】:

    标签: php mysql sql mysqli phpmyadmin


    【解决方案1】:

    您可以尝试 php 的 date_default_timezone_set 函数,其值为:'Europe/Berlin'

    date_default_timezone_set('Europe/Berlin');
    

    现在您的数据库将根据“欧洲/柏林”时间存储日期值。为您的事件实现逻辑,显示欧洲/柏林时区的条件

    【讨论】:

    • 但是怎么做呢?我不知道何时或如何实现这一点:/
    • 您只需要在启动时在您的 php 文件中添加上述函数,并使用 php date() 函数而不是 mysql now() 将事件日期保存在数据库中,然后使用 where 获取事件的条件再次调用 php 的 date() 函数。希望你明白我想说的:P
    • 是的,是的!!!!谢谢,虽然我找到了解决方案,但我这个也是另一种选择。非常感谢您的时间和帮助:)
    【解决方案2】:

    在您插入活动日期时间时使用它

    switchoffset(sysdatetimeoffset(),'+02:00')

    【讨论】:

    • 发现了一件事:“以 UTC 存储日期时间并在事后进行任何转换是一种常见的最佳实践。”所以我对使用哪个以及如何使用有点困惑。但这似乎是一个相对简单的解决方案。
    • 是的,您可以在 UTC 中存储日期时间,然后进行任何转换,这很容易。
    【解决方案3】:

    我认为您还需要实现一些 javascript,以获取用户的时区/时间。
    类似的东西:

    var d = new Date();
    var timezone = d.getTimezoneOffset();
    

    现在您需要将其传递给您的服务器端脚本,并确定您的事件是否会为该用户开启或关闭

    【讨论】:

    • 嘿@Andrew,问题是客户端的时区和我的一样,因为它就像一个足球队的私人页面,只有注册的人才能登录,而且所有的人有 CEST 时区。
    • @Sashka 然后忽略我的提示 :)
    【解决方案4】:

    Database timezone

    这有点回答我的问题。 mysql> SET time_zone = 'timezone_name';

    现在我必须发现如何构建查询...

    编辑:

    所以在完成上述操作后,我创建了查询select *, dayname(date) as day_name from dates where (date + interval 17 hour) > now()

    虽然我认为这个对我来说更好(目前),但上面提到的Bharat Maheshwari还有一个替代方案。(因为我在全国范围内工作,我不需要检查每个用户的时区,所以这让这项工作变得更容易了。)

    非常感谢您的帮助和提示!!!

    祝你有美好的一天。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-14
      • 2014-09-25
      • 2021-09-18
      • 2015-10-04
      相关资源
      最近更新 更多