Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将不推荐使用的时区转换为php_Php_Windows_Timezone_Iana - Fatal编程技术网

将不推荐使用的时区转换为php

将不推荐使用的时区转换为php,php,windows,timezone,iana,Php,Windows,Timezone,Iana,我正在将windows时区映射到IANA,请使用此源代码 但问题是,对于其中一些人来说,只有不推荐的php列表中的IANA名称 对它们来说,什么是正确的替代方案?您可以尝试从此文件解析并映射它们: 您可以尝试从此文件解析并映射它们: 另一个选项: 使用可以从此表中获取csv文件:。 我认为这些数据不会很快改变,所以你可以下载一次并保存在你的项目中 如果查看status列,您可以看到可能存在Canonical或Alias值 如果此列是alias,则应从Notes列中获取规范时区的名称。 如果列

我正在将windows时区映射到IANA,请使用此源代码

但问题是,对于其中一些人来说,只有不推荐的php列表中的IANA名称


对它们来说,什么是正确的替代方案?

您可以尝试从此文件解析并映射它们:


您可以尝试从此文件解析并映射它们:

另一个选项:

  • 使用可以从此表中获取csv文件:。 我认为这些数据不会很快改变,所以你可以下载一次并保存在你的项目中

  • 如果查看
    status
    列,您可以看到可能存在
    Canonical
    Alias

  • 如果此列是alias,则应从
    Notes
    列中获取规范时区的名称。 如果列是规范的-就是这样

  • 从重复项中筛选结果

  • 这样,我认为您将不会有空值

    另一个选项:

  • 使用可以从此表中获取csv文件:。 我认为这些数据不会很快改变,所以你可以下载一次并保存在你的项目中

  • 如果查看
    status
    列,您可以看到可能存在
    Canonical
    Alias

  • 如果此列是alias,则应从
    Notes
    列中获取规范时区的名称。 如果列是规范的-就是这样

  • 从重复项中筛选结果


  • 这样,我认为您将不会有空值

    对于为其应用程序选择特定时区的用户或开发人员而言,顶部的警告是合理的。然而,这些警告缺乏背景。具体而言:

    • 该页面上列出的所有时区仍然是有效的IANA时区标识符。他们现在工作,将来也会继续工作

    • 其中大多数是IANA数据库中的
      Link
      条目,指向当前规范
      区域
      条目。例如,
      Asia/Calcutta
      是指向
      Asia/Kolkata
      的链接。两者都是有效的,可以在PHP和其他系统中使用

    • 除了几个罕见的例外,IANA区域名称从来都不是真正的“弃用”,它们只是被降级到链接中,变得不规范。当我把那个专栏添加到文章中时,我应该选择更好的措辞。(是的,就是我。也许我可以更新一下。)

      • 一个罕见的例外是
        加拿大/东萨斯喀彻温省
        ,由于其较长的字符串长度和罕见的使用,IANA 2017c将其完全删除。如果数据库中有此项,请将其替换为
        America/Regina

      • 另一个罕见的例外是
        US/Pacific New
        ,在IANA 2020b中被完全删除,因为它造成了很多混乱。它从来不是一个真正的时区,只是一个链接。如果数据库中有此项,请将其替换为
        America/Los_Angeles

    • Etc/UTC
      是标准UTC区域。在大多数情况下,在服务器上设置默认时区时应继续使用它。它在任何方面都没有遭到反对

    • Etc/GMT+
      Etc/GMT-
      开头的区域是非领海船舶的固定偏移标准区域。它们有时也用于其他边缘情况。他们并没有以任何方式遭到反对。它们的偏移量是有意反转的(
      Etc/GMT+12
      =UTC-12)

    考虑到所有这些,您可以直接使用CLDR Windows区域映射文件的结果。除非您试图提供规范的结果,否则不需要对指向区域的链接进行任何额外的转换


    此外,您可能不需要自己编写此代码。可以通过将
    extension=PHP_intl.dll
    添加到
    PHP.ini
    文件中来安装PHP。然后可以使用类似的函数来执行映射。它在引擎盖下使用相同的CLDR文件。

    顶部的警告对于用户或开发人员为其应用程序选择特定时区是合理的。然而,这些警告缺乏背景。具体而言:

    • 该页面上列出的所有时区仍然是有效的IANA时区标识符。他们现在工作,将来也会继续工作

    • 其中大多数是IANA数据库中的
      Link
      条目,指向当前规范
      区域
      条目。例如,
      Asia/Calcutta
      是指向
      Asia/Kolkata
      的链接。两者都是有效的,可以在PHP和其他系统中使用

    • 除了几个罕见的例外,IANA区域名称从来都不是真正的“弃用”,它们只是被降级到链接中,变得不规范。当我把那个专栏添加到文章中时,我应该选择更好的措辞。(是的,就是我。也许我可以更新一下。)

      • 一个罕见的例外是
        加拿大/东萨斯喀彻温省
        ,由于其较长的字符串长度和罕见的使用,IANA 2017c将其完全删除。如果数据库中有此项,请将其替换为
        America/Regina

      • 另一个罕见的例外是
        US/Pacific New
        ,在IANA 2020b中被完全删除,因为它造成了很多混乱。它从来不是一个真正的时区,只是一个链接。如果数据库中有此项,请将其替换为
        America/Los_Angeles

    • Etc/UTC
      是标准UTC区域。在大多数情况下,在服务器上设置默认时区时应继续使用它。它在任何方面都没有遭到反对

    • Etc/GMT+
      Etc/GMT-
      开头的区域是非领海船舶的固定偏移标准区域。它们有时也用于其他边缘情况。他们是
      "Dateline Standard Time" "Etc/GMT+12"
      
       "Greenland Standard Time" "America/Godthab"
      
      "India Standard Time" "Asia/Calcutta"
      
       "Nepal Standard Time" "Asia/Katmandu"