将日期转换为这种格式

Posted

技术标签:

【中文标题】将日期转换为这种格式【英文标题】:Converting date to this format 【发布时间】:2011-01-22 05:23:01 【问题描述】:

我有这样格式的日期:

   24-12-2010 // DAY - MONTH - YEAR

我需要以这种格式获取它:

   1995-12-31T23:59:59.999Z // The Z is for the TimeZone I think.

查看此链接:

http://lucene.apache.org/solr/api/org/apache/solr/schema/DateField.html

上面的链接是我需要日期的方式。

我现在正在使用 php,所以这需要使用 PHP。 如何以最简单的方式转换这些日期?

谢谢

【问题讨论】:

【参考方案1】:

你可以这样做:

$dateTime = new DateTime($myDate);
$formatted = $dateTime->format("Y-m-d\TH:i:s.z\Z");

上述解决方案:

$dateTime->format(DateTime::W3C);
$dateTime->format(DateTime::ISO8601);

确实返回如下字符串:

2012-11-28T17:21:11+0100

无法解析,至少对于较新的 Solr 版本。

如果您需要支持时区,我不会使用 gmdate。 DateTime 的实现做得很好,也可用于函数式编程。

http://php.net/manual/en/class.datetime.php http://php.net/manual/en/ref.datetime.php

【讨论】:

z 是“一年中的某一天(从 0 开始)0 到 365” - 这种格式正确吗?【参考方案2】:
$date = strtotime('24-12-2010');
$new_date = gmDate("Y-m-d\TH:i:s.z\Z",$date); 

【讨论】:

【参考方案3】:

您可以使用DateTime 类

$dateTime = new DateTime();
$dateTime.setDate(24, 12, 2010);

$output = $dateTime.format(DateTime::W3C);

// Output now is your date in W3C format.

【讨论】:

请注意这不适用于 Solr。输出将是“2012-11-28T17:21:11+0100”,这是错误的。 还有。 PHP 中不存在符号。 @Christian 实际上,它用于连接。 :P【参考方案4】:

使用php的日期(string $format [, int $timestamp])函数! 在第二个参数中使用http://php.net/manual/en/function.strtotime.php 从字符串中获取时间戳

【讨论】:

【参考方案5】:

这是一个ISO8601格式的日期;以下是你想要的。

gmdate('Y-m-d\TH:i:s\Z', strtotime($date_value));

【讨论】:

我不建议这样做,因为它容易出错。最好自己提供输入格式,输出格式使用 DateTime::W3C。 如果输入格式是固定且可预测的,则它是可靠的(例如来自数据库)。如果输入格式来自用户,那么总是需要重新解析它。

以上是关于将日期转换为这种格式的主要内容,如果未能解决你的问题,请参考以下文章

如何将刻度转换为日期格式?

sql server2000如何将数字转换为日期时间

是否有任何方法在使用 INTL 包时将这种日期格式转换为 DD-MM-YYYY [重复]

JS日期格式的转换

如何将包含日期的 varchar 字段类型转换为正确的日期格式

关于在delphi中时间日期的转换问题,高手进