从php日期获取类似"Ymd H:i:s"的日期格式

vit*_*tto 8 php format datetime date date-format

有人知道从包含日期格式的日期获取字符串的方法吗?

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

    // smething like this?
    print date_format ($date);
?>
Run Code Online (Sandbox Code Playgroud)

我问这个是因为我想优化我写的这个函数,通常是为了从服务器获取与时区不同的日期,而不做特定的事情

<?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");
?>
Run Code Online (Sandbox Code Playgroud)

我希望出于性能原因避免使用正则表达式,但我不知道这是否可行

hsz*_*hsz 9

您可以使用strtotime将字符串日期转换为时间戳,并使用您想要的时间戳.;)

<?php
$date = "2009-10-16 21:30:45";
$ts   = strtotime($date);
echo date('Y-m-d', $ts);
?>
Run Code Online (Sandbox Code Playgroud)


DMI*_*DMI 5

据我所知,没有保证倒退的方法.最好的方法可能是尝试将正则表达式与预期的众所周知的格式匹配(例如,\d{2,4}[-/]\d{2}[-/]\d{2}对于"Ymd")但我想不出一种简单的方法来进行匹配而不使用正则表达式.你还必须检查所分析的格式是有道理的,你不能做很多有关明确的日期,就像2009年3月第2个,这可以表示为09/03/02,2009-03-02,02/03/09,03/02/09,甚至09/02/03.

  • 唯一真正了解OP问题的人! (2认同)

小智 5

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');
    ?>
Run Code Online (Sandbox Code Playgroud)