2010-12-05 140 views
0


我有这样的代码:更改日期的格式在PHP


$timestamp_bad = strtotime($statuses[$i]['created_at']); 
$timestamp = strptime(strftime("%Y-%m-%d %T", $timestamp_bad), "%Y-%m-%d %T"); 
echo $timestamp; 

我想换一个日期($状态[$ i] [ 'created_at']),这是例如"Sat Dec 04 17:43:38 +0000 2010"成例如2010-12-05 10:00:26,但如果我运行的代码我粘贴了你,在返回Array ()
如何更改该日期的格式?

回答

3

的日期功能:

$myDate = date('Y-m-d h:i:s', $timestamp); 
+0

date函数需要时间戳作为其第二个参数,并且strptime函数返回一个数组。我认为`$ timestamp`因此应该是`$ timestamp_bad`,所以strptime步骤完全被忽略。 – Mike 2010-12-05 10:30:53

2

这是因为strptime返回Array

http://php.net/manual/en/function.strptime.php

您可以构建从阵列结果:

$tm = strptime(...); 
printf('%04d-%02d-%02d %02d:%02d:%02d', 
    $tm['tm_year'] + 1900, 
    $tm['tm_mon'] + 1, 
    $tm['tm_mday'], 
    $tm['tm_hour'], 
    $tm['tm_min'], 
    $tm['tm_sec'] 
); 
0

这应该在PHP> = 5.3的工作,但它失败在我的安装(PHP 5.3.2-1ubuntu4.5):

$timestamp_bad = "Sat Dec 04 17:43:38 +0000 2010"; 
$dt = DateTime::createFromFormat('D M d H:i:s O Y', $timestamp_bad); 
echo $dt->format('Y-m-d H:i:s'); 

看到这个错误报告:

http://bugs.php.net/51393

然而,这个工作,并应在PHP < 5.3工作太:

$timestamp_bad = "Sat Dec 04 17:43:38 +0000 2010"; 
$timestamp = strtotime($timestamp_bad); 
echo date('Y-m-d H:i:s', $timestamp); 

打印:

2010-12-04 17:43:38 

它显示为尽管可以通过明确的转换格式的其他日期/时间解析函数也失败n提供的时区偏移量:

$timestamp_bad = "Sat Dec 04 17:43:38 +0000 2010"; 
$dt_array = strptime($timestamp_bad, '%a %m %d %T %z %Y'); 

// $dt_array == false