我需要将这种格式的日期(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
我尝试格式化日期,但只需几分钟的差异即可返回。
答案 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();