gpt4 book ai didi

php - 时区计算。 PHP 函数与 MySQL 函数

转载 作者:行者123 更新时间:2023-11-29 14:29:23 38 4
gpt4 key购买 nike

我正在使用 php 开发一个 API,我只是将查询结果作为 JSON 字符串发送出去。结果是多个表的组合。然而,时间领域就是其中之一。我需要根据不同表中的时区设置将其转换为不同的时区。

这是当前的输出:

     Array ( "Show_name" => "Billards",
"Show_type" => "Movie",
"Start_Time" => "2011-11-09 07:00:00",
"End_Time" => "2011-11-09 09:00:00",
"Open" => "Yes"
);

默认情况下,所有记录的开始时间和结束时间均采用美国东部时间 (EST)。时区设置存储在不同的表中,其中包含字段 Timezone_ID、GMT_offset、DST_offset。根据这些设置,默认情况下为 est 的 start_time 和 end_time 应转换为各自的时区。

我最初计划编写一个 MySQL 函数来从查询本身计算这个值,这样 JSON 格式/字段就不会改变。但我发现,与 PHP 函数相比,它太慢了。

根据您的经验,您有什么建议? - 有没有办法在查询中简单地计算? - MySQL 函数的性能比 PHP 更好吗? - 如果我需要使用 php 函数,我需要循环遍历所有记录来计算它。不确定我是否需要单独提取时区记录。因为我不想更改 JSON 响应中的格式/字段数量。

还有什么更好的办法吗?

最佳答案

我通常在数据库端执行此操作。请注意,我将数据库中的所有日期存储为 UTC。

因此,要在用户本地时区向用户显示数据,我会执行以下操作:

SELECT Show_name, Show_type,
Start_time, CONVERT_TZ(Start_time, 'UTC', 'EST') AS Start_time_local
FROM Shows

其中“EST”是用户在其首选项中选择的时区。

将数据库中的日期从 EST 更改为 UTC 不需要任何架构更改,因为时区不存储在架构中。

要将所有日期从 EST 转换为 UTC,只需执行以下操作:

UPDATE Shows
SET Start_time = CONVERT_TZ(Start_time, 'EST', 'UTC')

关于php - 时区计算。 PHP 函数与 MySQL 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10303710/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com