我现在有一个这种格式的约会
2010-03-03 10:39:18这是一个TIMESTAMP字段,在MySQL中。我需要为一个名为Solr的搜索引擎提供这种格式的日期:
1995-12-31T23:59:59Z以下是他们网站上关于日期的一些文本:
Solr期望索引时日期为UTC。此日期字段的格式为1995-12-31T23:59:59Z,是dateTime http://www.w3.org/TR/xmlschema-2/#dateTime规范表示的一种更受限制的形式。尾随的"Z“指定UTC的时间,并且是强制性的。允许可选分数秒: 1995-12-31T23:59:59.999Z所有其他组件都是强制性的。
我是从另一个Q中得到这段代码的,但是它不起作用。Solr抱怨“无效的时间字符串”:
$solr_date = date('c', (strtotime($date_from_mysql)); // doesn't work当回显$solr_date,时,上面提到的尾随Z并不存在。谢谢。
发布于 2010-03-05 14:05:26
你为什么不把它转换成世界协调时呢?
$datetime = "2010-01-19 00:00:00";
echo "Datetime Before: ".$datetime."<br />";
$dttostr = strtotime("2010-01-19 00:00:00");
echo "Datetime After: ".formatToUTC($dttostr)."<br />";
echo "System Timezone: ".date_default_timezone_get()."<br />";
function formatToUTC($passeddt) {
// Get the default timezone
$default_tz = date_default_timezone_get();
// Set timezone to UTC
date_default_timezone_set("UTC");
// convert datetime into UTC
$utc_format = date("Y-m-d\TG:i:s\Z", $passeddt);
// Might not need to set back to the default but did just in case
date_default_timezone_set($default_tz);
return $utc_format;
}发布于 2010-03-03 10:48:11
首先,值得注意的是,MySQL中的日期/时间列没有以任何特定的字符串格式存储。它们在打印时被转换成字符串,您可以选择如何格式化它们。
如果您想要一个纯MySQL解决方案,那么与您的问题相关的函数包括获得UTC时间的Z()和根据需要显示它的格式()。例如:
SELECT CURRENT_TIMESTAMP,
CONVERT_TZ(CURRENT_TIMESTAMP, '+01:00', '+00:00'),
DATE_FORMAT(CONVERT_TZ(CURRENT_TIMESTAMP, '+01:00', '+00:00'), '%Y-%m-%dT%H:%i:%sZ')问题基本上是,您必须事先知道您的时区,因为时间戳列不允许存储此类信息。此外,您可能会发现夏令时的问题。
关于PHP,日期()函数允许组合格式代码,而不仅仅限于一个:
<?php
$ts = strtotime($date_from_mysql);
$solr_date date('Y-m-d', $ts) . 'T' . date('H:i:s', $ts) . 'Z';
?>发布于 2013-04-16 03:48:52
只管用
gmdate('Y-m-d\TH:i:s\Z', $time);
https://stackoverflow.com/questions/2370171
复制相似问题