PHP格式日期yyyy-mm-ddThh:ii:ss到Y-m-d h:i:s

时间:2017-06-14 17:02:12

标签: php

我需要将这种格式的日期(2017-06-14T08:22:29.296-03:00)转换为Y-m-d H:i:s。我从肥皂服务的xml响应中获取该日期,我需要检查过期日期是否小于实际日期。

我有这个并且在localhost上运行正常,但是当它上传到其他服务器时,我有验证问题:

if($wsaa->get_expiration() < date("Y-m-d h:m:i")) {
    if ($wsaa->generar_TA()) {
        echo '<br>Nuevo Ticket de Acceso Generado'; 
    } else {
        echo '<br>No se pudo obtener ticket de acceso'; 
    }
} else {
    echo '<br>TA expira:' . $wsaa->get_expiration(); 
}

$ wsaa-&gt; get_expiration()返回2017-06-14T08:22:29.296-03:00

我尝试格式化日期,但只需几分钟的差异即可返回。

2 个答案:

答案 0 :(得分:3)

您可以使用date功能进行格式化,并使用strtotime将当前日期转换为date所需功能的时间戳:

$datetime = '2017-06-14T08:22:29.296-03:00';

$format_date  = date('Y-m-d H:i:s', strtotime($datetime));

答案 1 :(得分:0)

使用来自http://carbon.nesbot.com的碳的OOP中的替代解决方案。如果你运行我的例子,你可能会注意到solution1()落后一小时。这就是为什么我推荐Carbon的原因是它在时区中表现得非常好。

首先运行&#34;作曲家需要nesbot / carbon&#34 ;;

<?php
require 'vendor/autoload.php';
use Carbon\Carbon;

class FormatDate 
{   
    protected $dateTime;
    protected $newFormat;

    public function __construct($dateTime, $newFormat) 
    {   
        $this->dateTime = $dateTime;
        $this->newFormat = $newFormat;
    }   

    // Solution 1
    public function solution1()
    {   
        $format_date = date($this->newFormat, strtotime($this->dateTime));

        return $format_date;
    }   

    // Solution 2
    public function solution2()
    {   
        $date = Carbon::parse($this->dateTime)->format($this->newFormat);

        return $date;
    }   
}

$datetime = '2017-06-14T08:22:29.296-03:00';
$newFormat = 'Y-m-d H:i:s';

// Solution 1
echo (new FormatDate($datetime, $newFormat))->solution1();

echo '----------------------------';

// Solution 2
echo (new FormatDate($datetime, $newFormat))->solution2();