代码之家  ›  专栏  ›  技术社区  ›  mrpatg

用PHP将格式化的日期拆分为单个月/日/年小时/分钟/秒

  •  2
  • mrpatg  · 技术社区  · 15 年前

    我有一个以下格式的日期

    November 18, 2009, 3:00PM
    

    如何将其分解,以便将每个值存储为自己的变量?

    比如…

    $month //November
    $day //18
    $year //2009
    $hour //03
    $minute //00
    $ampm //PM
    
    4 回复  |  直到 12 年前
        1
  •  1
  •   Peter Lindqvist    15 年前
    $str = "November 18, 2009, 3:00PM";
    list($month,$day,$year,$time) = preg_split('/[ ,]/',$str,false,PREG_SPLIT_NO_EMPTY);
    preg_match('/([0-9]+):([0-9]+)([AP]M)/',$time,$timeparts);
    list($time,$hour,$minute,$ampm) = $timeparts;
    
    echo "\$month  $month\n";
    echo "\$day    $day\n";
    echo "\$year   $year\n";
    echo "\$hour   $hour\n";
    echo "\$minute $minute\n";
    echo "\$ampm   $ampm\n";
    

    输出

    $month  November
    $day    18
    $year   2009
    $hour   3
    $minute 00
    $ampm   PM
    
        2
  •  4
  •   TheGrandWazoo    15 年前

    使用“日期分析”( http://nl2.php.net/manual/en/function.date-parse.php )函数。它返回一个包含已分析项的数组:

    Array
    (
        [year] => 2006
        [month] => 12
        [day] => 12
        [hour] => 10
        [minute] => 0
        [second] => 0
        [fraction] => 0.5
        [warning_count] => 0
        [warnings] => Array()
        [error_count] => 0
        [errors] => Array()
        [is_localtime] => 
    )
    
        3
  •  2
  •   Ben    15 年前

    把你的日期转换成时间戳,然后用时间戳你可以很容易地得到你的部分。另一种方法是使用正则表达式。

        4
  •  1
  •   Sergey Kuznetsov    15 年前

    更复杂的解决方案。 如果您的日期可能是不同的标准,则可以使用date()函数( http://php.net/manual/en/function.date.php )+strtoTime()函数( http://php.net/manual/en/function.strtotime.php ,它解析字符串并返回Unix时间戳。

    例如,如果您想从日期字符串中获得一年,可以编写下一个代码:

    $date = 'November 18, 2009, 3:00PM';
    
    $year = date('Y', strtotime($date));
    

    或者,如果您想知道一个月中您得到的日期是多少天,您可以编写这样的代码:

    $date = 'November 18, 2009, 3:00PM';
    
    $num_of_days = date('t', strtotime($date));
    

    't'返回给定月份的天数。

    推荐文章