【问题标题】:PHP date() function returning wrong value after clock changePHP date() 函数在时钟更改后返回错误值
【发布时间】:2011-10-31 12:47:56
【问题描述】:

我有一个简单的函数将月份从数字转换为名称,即 10 到 10 月

function convertToName($month) {  
    $month = date('F', mktime(0, 0, 0, $month));

    return $month;
}

这一切都很好,直到时钟似乎倒退了一个小时。我现在又把名字弄错了。

我尝试使用 date_default_timezone_set 定义时区,但仍然没有。

奇怪的是,如果你传递函数 10,它返回十月,但传递它 11 或 12,它返回十二月,传递 1,一月,2 和 3 返回三月,等等。

我猜肯定有一个非常简单的修复方法,但似乎无法在任何地方找到答案,

任何帮助将不胜感激,

谢谢。

【问题讨论】:

  • 请举例说明哪里出了问题。同时显示您用于设置时区的代码
  • 这是获取月份名称的一种奇怪方法。您正在将信息转换为时间戳,然后打印月份。你为什么不直接使用switch?第 1 个月永远是一月

标签: php function date mktime


【解决方案1】:

尝试通过1天...php.net说一个月的0天实际上是上个月的最后一天

【讨论】:

  • 解决了,谢谢。感谢其他所有人,我会考虑使用更简单的方法。
【解决方案2】:

只需提供任何有效值的日期和年份部分,您就会得到正确的结果:

<?php

function convertToName($month) {  
    $month = date('F', mktime(0, 0, 0, $month, 10, 2010));

    return $month;
}

echo "1: " . convertToName(1) . "<br />";
echo "2: " . convertToName(2) . "<br />";
echo "3: " . convertToName(3) . "<br />";
echo "4: " . convertToName(4) . "<br />";
echo "5: " . convertToName(5) . "<br />";
echo "6: " . convertToName(6) . "<br />";
echo "7: " . convertToName(7) . "<br />";
echo "8: " . convertToName(8) . "<br />";
echo "9: " . convertToName(9) . "<br />";
echo "10: " . convertToName(10) . "<br />";
echo "11: " . convertToName(11) . "<br />";
echo "12: " . convertToName(12) . "<br />";

它产生以下结果:

1: January
2: February
3: March
4: April
5: May
6: June
7: July
8: August
9: September
10: October
11: November
12: December

【讨论】:

    【解决方案3】:

    正如@OptimusCrime 指出的那样,这是一种相当复杂的找出月份的方法。

    我会考虑

    /** @desc Converts a month number (1-12) to a name
        @return mixed the month name on success; false on failure 
    */
    
    function convertToName($month) {  
    
        $months = array ("January", "February", ....); // you get the drift
        return (array_key_exists($month, $months) ? $months["month"] : false);
    
    }
    

    显然,这消除了 date("F") 可能提供的内置国际化功能,但我个人喜欢以任何一种方式自行控制 - 您通常不能相信服务器安装了特定的语言环境。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-23
      • 1970-01-01
      • 2013-04-20
      • 1970-01-01
      • 2011-02-14
      • 1970-01-01
      相关资源
      最近更新 更多