【问题标题】:Converting separate month, day and year values into a timestamp将单独的月、日和年值转换为时间戳
【发布时间】:2011-09-06 16:47:56
【问题描述】:

我有一个月份值 (1-12)、日期值 (1-31) 和年份值 (2010,2011,2012)。我还有一个小时值和一个分钟值。

我怎样才能将其提供给strtotime(),以便它可以将其转换为时间戳?

【问题讨论】:

标签: php date time timestamp


【解决方案1】:

既然已经知道年月日,为什么还要将字符串转换为日期。

使用setDate函数

<?php
$date = new DateTime();
$date->setDate(2001, 2, 3);
echo $date->format('Y-m-d');
?>

【讨论】:

    【解决方案2】:

    给定变量 $year $month $day $hour $minute 你可以这样做:

    strtotime("$year-$month-$day $hour:$minute");
    

    注意用" 括起来变量,在这种情况下千万不要用'

    更新(感谢@Clockwork 和@Tadeck 的cmets):

    如果有一个变量$timeofday 表示一天中的时间(即上午或下午), 然后你可以用以下方式解析它:

    strtotime("$year-$month-$day $hour:$minute$timeofday");
    

    也就是说,只需将该变量附加到文本的末尾即可。

    【讨论】:

    • 我忘了说我也有一天中的某个时间(上午/下午),我可以把它加到最后吗?
    • @Clockwork 尝试将上午/下午附加到小时。像这样的东西:strtotime("$year-$month-$day $hour:$minute$timeOfDay");。但这是我以前从未测试过的东西。
    • @Nicolas 我刚刚测试过,最后包含ampm 可以正常工作(如预期的那样)。
    • @Clockwork 和@Tadeck:我刚刚用你们的 cmets 更新了答案。
    【解决方案3】:

    strtotime 是完成这项工作的最佳工具吗? mktime()呢?

    $time = mktime($hour, $minute, 0, $month, $day, $year);
    

    【讨论】:

      【解决方案4】:

      您可以通过多种方式将其提供给strtotime(),如documentation 中所述。一些例子包括:

      $your_time = strtotime('12/31/2011 9:59');
      $your_time = strtotime('2011-12-31 9:59');
      $your_time = strtotime('December 31, 2011 9:59');
      

      等等。它确实非常灵活。

      您可以找到有效格式列表in the documentation,即(来自上述文档中的“复合格式”列表),例如:

      • 10/Oct/2000:13:55:36 -0700,
      • 2008:08:07 18:11:31,
      • 2008-08-07 18:11:31,
      • 2008-07-01T22:35:17.02,
      • 2008-07-01T22:35:17.03+08:00,
      • 20080701T22:38:07,
      • 20080701T9:38:07,
      • 20080701t223807,
      • 20080701T093807,
      • 2008-7-1T9:3:37,

      (这是真正的文档副本)

      【讨论】:

        【解决方案5】:

        像这样使用strtotime("YYYY-mm-DD HH:MM AM/PM"):

        echo date("d F Y h:i:s A", strtotime("2011-06-01 11:15 PM")) . "\n";
        

        输出

        01 June 2011 11:15:00 PM
        

        【讨论】:

        • 这不是他想要的
        • 可能你读到了一些我看不懂的问题,但如果没有任何示例输入、输出,问题就不是很清楚。
        • 他只需要没有日期的strtotime
        • @yes123: date 函数仅用于回显目的,仅以人类可读格式打印:)
        • @A Clockwork Orange:请看我的回答,例如最后使用 AM/PM。
        【解决方案6】:

        Y-m-d hh:mm 可以工作

        echo strtotime('2011-12-14 11:44 am');
        

        引用@Pekka :)

        【讨论】:

          【解决方案7】:
          strtotime($month."-".$day."-".$year)
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-01-12
            • 2023-03-17
            • 1970-01-01
            相关资源
            最近更新 更多