如何从XML文件转换日期



我正在从一个XML文件中获取日期,该文件以以下方式在2019-05-13T16:02:16.中找到

在PHP变量中获得此日期后,我将其保存在SQL中的表中,以提供正确的日期格式,并且只有日期像这样存储而没有时间,我正在执行以下操作:

$xml = new SimpleXMlElement( $_FILES['XmlToUpload']['tmp_name'], 0, true );
$fechaCadena = strtotime("21/05/2021");
$fechaEntrada = getdate($fechaCadena);
$fechaEntrada = $xml['Fecha'];

查看表中的日期时,会以以下格式保存:

2019-05-13

我想把这个日期转换成以下格式:

dd/mm/yyyy

我以前尝试过用replace'-'改为'/',但它仍然不起作用

$fechaCadena = strtotime(str_replace('-', '/',"21/05/2021"));

我希望有人能给我更多的指导,告诉我如何正确地将日期转换为我想要的格式。

如果我正确理解您的问题,您可以在从XML文件获得时间后简单地使用以下代码:

$format = date("d/m/Y", strtotime("2019-05-13")); //You can put a variable instead of 2019-05-13
echo $format;

结果是:

13/05/2019

根据您的评论,您也有兴趣将日期保存到SQL表中。据我所知,SQL将DateTime保存为时间戳格式。如果您有兴趣获得所需格式的日期,您应该使用SELECT语句和CONVERT函数,如本链接所示。

使用DateTimeImmutable类。

$date = new DateTimeImmutable(
'2019-05-13', 
new DateTimezone('America/Los_Angeles')
);

现在您可以使用format()方法以特定格式输出日期:

var_dump($date->format('m/d/Y'));
string(10) "05/13/2019"

你可能想知道我为什么提供时区。好吧,试试下面的:

// full date time in iso format
var_dump(
$date->format(DateTimeInterface::RFC3339)
);
// with a different timezone
var_dump(
$date
->setTimezone(new DateTimezone('America/Atka'))
->format(DateTimeInterface::RFC3339)
);
string(25) "2019-05-13T00:00:00-07:00"
string(25) "2019-05-12T22:00:00-09:00"

完整的日期时间需要一个时区才能完整。

格式化日期时间的另一种可能性是使用IntlDateFormatter。它允许您使用区域设置设置日期格式,从而更容易为多种语言进行开发。

var_dump(
[
'en-US'=> IntlDateFormatter::formatObject(
$date, [IntlDateFormatter::SHORT, IntlDateFormatter::NONE], 'en-US'
),
'en-GB'=> IntlDateFormatter::formatObject(
$date, [IntlDateFormatter::SHORT, IntlDateFormatter::NONE], 'en-GB'
),
'de-DE'=> IntlDateFormatter::formatObject(
$date, [IntlDateFormatter::SHORT, IntlDateFormatter::NONE], 'de-DE'
),
'ar-AE'=> IntlDateFormatter::formatObject(
$date, [IntlDateFormatter::SHORT, IntlDateFormatter::NONE], 'ar-AE'
),
]
);
array(3) {
["en-US"]=>
string(7) "5/13/19"
["en-GB"]=>
string(10) "13/05/2019"
["de-DE"]=>
string(8) "13.05.19"
["ar-AE"]=>
string(22) "١٣‏/٥‏/٢٠١٩"
}

相关内容

  • 没有找到相关文章

最新更新