将日期转换为这种格式
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。 如果输入格式是固定且可预测的,则它是可靠的(例如来自数据库)。如果输入格式来自用户,那么总是需要重新解析它。以上是关于将日期转换为这种格式的主要内容,如果未能解决你的问题,请参考以下文章
是否有任何方法在使用 INTL 包时将这种日期格式转换为 DD-MM-YYYY [重复]