相关疑难解决方法(0)

夏令时和时区最佳实践

我希望能够将这个问题及其答案作为处理夏令时的权威指南,特别是处理实际的变更问题.

如果您有任何要添加的内容,请执行此操作

许多系统依赖于保持准确的时间,问题在于由于夏令时改变时间 - 向前或向后移动时钟.

例如,在订单获取系统中有一个业务规则取决于订单的时间 - 如果时钟发生变化,规则可能不那么明确.如何保持订单的时间?当然有无数的场景 - 这只是一个说明性的场景.

  • 你是如何处理夏令时问题的?
  • 您的解决方案中有哪些假设?(在这里寻找背景)

同样重要的是,如果不是这样的话:

  • 你尝试了哪些不起作用?
  • 为什么不起作用?

我会对编程,操作系统,数据持久性和该问题的其他相关方面感兴趣.

一般答案很好,但我也希望看到细节,特别是如果它们只在一个平台上可用.

timezone datetime utc datetimeoffset dst

2021
推荐指数
20
解决办法
40万
查看次数

PHP时区列表

我正在寻找一种方法来生成时区列表,以便在使用PHP生成时区的下拉列表中显示<select>

    $list = DateTimeZone::listAbbreviations();
    $idents = DateTimeZone::listIdentifiers();

    $data = $offset = $added = array();
    foreach ($list as $abbr => $info) {
        foreach ($info as $zone) {
            if ( ! empty($zone['timezone_id'])
                AND
                ! in_array($zone['timezone_id'], $added)
                AND 
                  in_array($zone['timezone_id'], $idents)) {
                $z = new DateTimeZone($zone['timezone_id']);
                $c = new DateTime(null, $z);
                $zone['time'] = $c->format('H:i a');
                $data[] = $zone;
                $offset[] = $z->getOffset($c);
                $added[] = $zone['timezone_id'];
            }
        }
    }

    array_multisort($offset, SORT_ASC, $data);
    $options = array();
    foreach ($data as $key => $row) {
        $options[$row['timezone_id']] …
Run Code Online (Sandbox Code Playgroud)

php time timezone

35
推荐指数
6
解决办法
8万
查看次数

PHP和MySQL:将存储的TIMESTAMP转换为用户的本地时区

所以我有一个带注释功能的站点,其中注释的时间戳存储在MySQL数据库中.据我所知,时间戳在存储时转换为UTC,然后在检索时转换回默认时区.就我而言,我的服务器处于中央夏令时时区(CDT).

我计划通过报名表从每个用户获取时区.我只是想知道如何将TIMESTAMP值转换为用户的时区.

  • 首先,我会从UTC转换为本地时区吗?或者CDT到当地时区?
  • 其次,我将如何在PHP中执行此操作?我会这样做:
$userTimezone = new DateTimeZone($userSubmittedTimezoneString);
$myDateTime = new DateTime($storedTimestamp, $userTimezone);

......还是不正确?

php mysql timezone datetime timezone-offset

13
推荐指数
1
解决办法
2万
查看次数

使用国家/地区名称或城市名称在国家/地区获取时间(如果国家/地区有多个时区,可以获得更准确的时间)

使用国家/地区名称或城市名称在国家/地区获取时间(如果国家/地区有多个时区,可以获得更准确的时间)

例如

echo get_local_time('England');  //8:23pm
echo get_local_time('New York'); //7:23am 
Run Code Online (Sandbox Code Playgroud)

这可能纯粹用PHP /那里有任何API吗?

php api time

1
推荐指数
1
解决办法
2755
查看次数

获取所有时区

我正在尝试获取所有时区。我所做的是:

$tzlist = DateTimeZone::listIdentifiers(DateTimeZone::ALL);

它给了我一个这样的数组:

Array
(
    [0] => Africa/Abidjan
    [1] => Africa/Accra
    [2] => Africa/Addis_Ababa
    [3] => Africa/Algiers
    [4] => Africa/Asmara
    [5] => Africa/Bamako
    [6] => Africa/Bangui
    [7] => Africa/Banjul
    [8] => Africa/Bissau....
Run Code Online (Sandbox Code Playgroud)

我想将所有时区的时区名称更改为完整时区名称,例如

Australia/Darwin = AUS Central Standard Time
Run Code Online (Sandbox Code Playgroud)

您可以在此处查看示例

php timezone datetime

0
推荐指数
1
解决办法
1357
查看次数

标签 统计

php ×4

timezone ×4

datetime ×3

time ×2

api ×1

datetimeoffset ×1

dst ×1

mysql ×1

timezone-offset ×1

utc ×1