php - 从 MySQL 导入时如何在 solr 中保持时区?
问题描述
我正在运行 solr 7.7.x,它从 MySQL 导入数据,包括日期。在数据库中,时间保存到服务器当前时区。solr 导入后,它转换为 UTC。在我提取数据时,这会导致 2 小时的偏移:
MySQL:
"date_created":"2019-04-01 17:18:45"
MySQL导入查询:
SELECT DATE_FORMAT( c.date_created, '%Y-%m-%dT%H:%i:%sZ' ) AS date_created FROM cls
解决方案:
"date_created":"2019-04-01T19:18:45Z",
PHP:
date("Y-m-d H:i:s", strtotime($item['date_created']));
我也试过:
$tz = new DateTimeZone('Europe/Berlin');
$date = new DateTime($classified['date_created']);
$date->setTimezone($tz);
$ad['time_created'][$index] = $date->format('Y-m-d H:i:s');
同样的结果,时间偏移了 2 小时。如果我将 DateTimeZone 更改为 US,它将偏移 9h,这表明至少它有一些效果。
我暂时通过以下方式修复它:$ad['time_created'][$index] = date("Y-m-d H:i:s", strtotime($classified['date_created'])-7200);
这对我来说似乎不是一个好的解决方案。
如何保持 MySQL 的时间以及在 solr 中处理时区的推荐方法是什么?
解决方案
我不确定这是否会解决您的问题,但您可以通过为 solr 分配时区来将 Solr 的时区与 MySQL 时区同步,默认情况下,solr 在 UTC 时区工作。
如果 Solr 在 Windows 机器上,请在 solr-xxx\bin\solr.in.cmd 中指定时区,如下所示
set SOLR_TIMEZONE=<yourTimezone>
如果 Solr 在 linux 上,在 solr-xxx\bin\solr.in.sh
SOLR_TIMEZONE="<yourTimezone>"
推荐阅读
- python - 针对另一个模型验证表单字段
- python - 如何从字典中将字符串添加到python中的json文件
- javascript - Nuxt.js 服务器端 Javascript 问题,框架混乱
- python - 当您知道文件的类型但不知道名称时,如何从 Azure Data Lake 下载文件?
- java - 如何在android的Recyclerview中停止GIF图像的动画
- sql - Sqlite 查询:每个播客的最近五集
- python - 计算熊猫系列中连续的个数
- html - Angular不渲染从组件中提取的HTML?
- javascript - 在 React Native 中使用来自 API 的数据进行条件渲染
- java - java.io.FileNotFoundException(没有这样的文件或目录) - 下载文件