我正在从一个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) "١٣/٥/٢٠١٩"
}