【问题标题】:What way is better to use date with timzone for clients为客户使用带时区日期的更好方法
【发布时间】:2013-02-05 13:41:20
【问题描述】:

我正在为 joomla 构建一个组件,其中包含其他人的公告。并且该公告具有其事件的创建日期和日期。我的客户可能在不同的国家。一个人可以在两个不同的时刻出现在两个国家。所以我认为他的时区应该是动态的。对于此类问题,哪种方式更好地设置创建日期和事件日期。

【问题讨论】:

    标签: php date joomla time timezone


    【解决方案1】:

    Joomla 会自动处理,因为您不存储为 UTC 以外的任何内容。

    【讨论】:

    • 当我使用 JFactory::getDate()->toMySQL();它在我的时区显示日期,但它以 UTC 存储日期如果我的时间是 05:00,我在伊斯坦布尔它会正确显示它,但它将它存储为 03:00
    • 没错,这就是为什么它会在用户所在的位置显示正确的原因。它会在纽约时间显示给我。
    • 哦,我现在明白了。那么,我是否需要将其存储为 unix 时间戳。此外,我正在使用 getDate($date, JFActory::getConfig()->getValue('config.offset')) 但它需要在配置文件中设置的时区。但是我如何为个人用户设置它我假设这些用户从未设置它的时区:D
    • datetime 是 Joomla 通常存储和期望的。
    【解决方案2】:

    您应该始终以 UTC (GMT) 时间存储数据,最好以 Unix 时间戳的形式存储。这是一个不受任何类型夏令时变化影响的标准,非常适合保存一个恒定的时间点。

    然后,在向单个用户显示日期和时间时,您可以将该时间戳转换为他们的本地日期和时间。

    【讨论】:

    • 假设,一辆车将从一个国家转移到另一个国家。应注明其离开时间。因此,我将使用 unix 时间戳来确保可靠。但是当用户查看该车辆数据时,它会看到那个时间。哪个时区适合它国家的时区是汽车将开始移动的地方还是客户的时区?
    • 数据库表列属性应该是什么。 UTC和GMT有什么区别
    • 如果他的问题是从 UTC 时间呈现的,那么你需要处理它。如果您只希望它在特定城市的时区显示,那么您需要在渲染端通过给它一个特定的格式来做到这一点。看看核心如何通过 JText 处理数据。
    • 关于您的 db 列问题,在 MySQL 中有一个 TIMESTAMP 列数据类型。在所有主要的数据库系统中都有类似的东西。
    • joomla 使用日期时间。 DATEYIME 和 TIMESTAMP 之间有什么区别吗?我仍然无法在 php 代码中使用时区:S
    【解决方案3】:

    我总是将日期时间保存在 GMT 中,并根据您可以从该用户的浏览器标头、IP 地址或其他信息获取的时区,根据需要在 PHP 端显示它个人资料设置。

    即使客户端位于 2 个不同的时区,您也应该能够跟踪他们在哪个浏览器上(从哪个时区)以这种方式查看页面。

    【讨论】:

    猜你喜欢
    • 2017-05-17
    • 2021-01-07
    • 1970-01-01
    • 1970-01-01
    • 2010-12-22
    • 2015-07-21
    • 1970-01-01
    • 2019-03-04
    • 2018-11-03
    相关资源
    最近更新 更多