如何在PHP中将Y-m-d H:i:s转换为Y-m-d?

7
如何在PHP中将Y-m-d H:i:s转换为Y-m-d?
我有一个例如:
$date = "2011-08-10 20:40:12";

我想将其转换为

$output = "2011-08-10";

提前感谢您。

10个回答

16

快速/简单:

$output = substr('2011-08-10 20:40:12', 0, 10);

稍微更加健壮:

$output = date('Y-m-d', strtotime('2011-08-10 20:40:12'));

相当可靠:

$output = DateTime::createFromFormat('Y-m-d h:i:s', '2011-08-10-20:40:12')->format('Y-m-d');

在 PHP 5.5.4 的第三种情况下:致命错误:找不到“Date”类,但 DateTime::createFromFormat() 可用。 - happy_marmoset

7

使用 strtotime() 可以轻松完成,而且还能更改为您需要的任何其他日期格式。

$old_date = "2011-08-10 20:40:12";
$new_date = date("Y-m-d", strtotime($old_date));
echo $new_date;

// Prints 2011-08-10

3
很简单的方法是(如果您已经有了一个日期字符串):
$output = substr($date, 0, 10);

这意味着你要获取"2011-08-10 20:40:12"中的前10个字符,剩下的就是"2011-08-10"!

3

2

另一种解决方案是使用子字符串,虽然不太好:

$newDate = substr($date, 0, 10)

你们真是太快了!这个已经被发布了。 - demius
很高兴看到我不是唯一一个认为这个“简单”的人! :-) - karllindmark

1
$old_date = "2011-08-10 20:40:12";
$new_date = date("Y-m-d", strtotime($old_date));
echo $new_date;

// Prints 2011-08-10

这应该非常有用。


1
$date = date("Y-m-d", strtotime($date)); 

只需使用日期格式来表示日期,然后将您的字符串转换为时间戳即可。


1

我更喜欢使用strftime而不是date,因为它的格式输入与C和其他语言中的格式匹配。

$output = strftime( '%Y-%m-%d', strtotime( $date) );

0

通过对使用explode方法进行微调,您可以将其转换为一行代码:

list($date) = explode(' ', $date);

list函数在处理日期方面非常方便。

另一个使用list的例子:

list($year, $month, $day) = explode(' ', $date);

此外,在字符串中最好使用'而不是",除非您的字符串包含变量。

例如:

  • 'yada'
  • 'bing'
  • "Hello {$bob}"

我已经厌倦了看到甚至PHP文档在应该使用'string'的示例中使用"string" :o)


-1

尝试:

$date = explode(" ",$date);
$output = $date[0];

如果它们被空格分隔,你可以使用 explode 函数将它们分开。

它会报错,无法将字符串偏移量转换为数组。 - mahipal purohit

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接