从php日期获取日期格式如“Y-m-d H:i:s”

问题描述:

确实有人知道从日期获取包含日期格式的字符串的方式吗?从php日期获取日期格式如“Y-m-d H:i:s”

<?php 
    $date = date ("2009-10-16 21:30:45"); 

    // smething like this? 
    print date_format ($date); 
?> 

我问这个,因为我想优化这个功能,我写的,通常获取日期与服务器不同的时区,而不会做特别的事情

<?php 
function get_timezone_offset ($timezone, $date = null, $format = null, $offset_timezone = null) { 
    if ($date == null) $date = date ($format); 
    if ($offset_timezone == null) $offset_timezone = date_default_timezone_get(); 
    if ($format == null) $format = "Y-m-d H:i:s"; 
    // I'd like to find a way that can avoid me to write $format and get it directly from the date i pass, but I don't know a particular method can do it 
    // if ($format == null) $format = date_format ($date); 

    $date_time = new DateTime ($date, new DateTimeZone ($offset_timezone)); 
    $date_time->setTimeZone (new DateTimeZone ($timezone)); 
    return $date_time->format ($format); 
} 

print get_timezone_offset ("Europe/Rome"); 
print get_timezone_offset ("Europe/Rome", date ("Y-m-d H:i:s")); 
print get_timezone_offset ("Europe/Rome", date ("Y-m-d H:i:s"), "Y-m-d H:i:s"); 
print get_timezone_offset ("Europe/Rome", "2009-10-16 21:30:45", "Y-m-d H:i:s", "America/New_York"); 
?> 

我希望避免正则表达式的性能原因,但我不知道这是否可能

据我所知,没有保证的反向工作方式。最好的办法可能是尝试将正则表达式与预期的众所周知的格式相匹配(例如\d{2,4}[-/]\d{2}[-/]\d{2}用于“Y-m-d”),但我想不到使用正则表达式进行匹配的简单方法。你还必须检查解析后的格式是否有意义,而且你不能对诸如2009年3月2日这样的模糊日期做过多处理,这可能表示为09/03/02,2009-03-02,02/03/0903/02/09,或者甚至09/02/03

+1

唯一一个真正理解OP的问题的人! – 2015-12-14 20:42:58

您可以将字符串日期转换为时间戳与strtotime和做任何你想要的时间戳。 ;)

<?php 
$date = "2009-10-16 21:30:45"; 
$ts = strtotime($date); 
echo date('Y-m-d', $ts); 
?> 
+1

这看起来对我来说,他想从一个日期的格式向后工作。 (即从“2009-10-16”到“Y-m-d”) – DMI 2009-12-06 12:51:18

+0

我的错误 - 我复制的代码太快 - 现在没关系。 – hsz 2009-12-06 12:53:21

PHP date()函数将时间戳格式化为更易读的日期和时间。试试这个代码,你的项目,

<?php 
    $date=date_create('2014-10-20'); 
    date_time_set($date,12,20,55); 
    echo date_format($date,'Y-m-d H:i:s'); 
    ?> 

我知道它的晚,但它是最好的事:

$date = date("Y-m-d");