php - 意外数据发现日期格式?
问题描述
数据库中 UTC 中有timestamp
字段(非空),其值为:2019-08-09 20:06:08
。
我尝试使用函数将这个时间转换为当地时间:
private function toLocalTime($dateInUTC) {
$time = strtotime($dateInUTC.' UTC');
return date("d/m/Y H:i", $time);
}
转换为:
$response = []; // Data is present here
foreach($response as $v) {
$v->created_at = $this->toLocalTime($v->created_at);
}
在我打电话的地方$this->toLocalTime()
我得到了例外:
我试过这段代码:
$timestamp = '2019-08-09 10:41:00';
$date = Carbon::createFromFormat('Y-m-d H:i:s', $timestamp, 'UTC');
$date->setTimezone('your/timezone'); //
$new_date = $date->format('your new format'); // Y-m-d H:i:s
也许我$timestamp
的某个地方是空的?
解决方案
正如我所见,您的项目中有碳:
$timestamp = '2019-08-09 10:41:00';
$date = Carbon::createFromFormat('Y-m-d H:i:s', $timestamp, 'UTC');
$date->setTimezone('America/Argentina/Buenos_Aires'); // or your timezone
$new_date = $date->format('Y-m-d H:i:s'); // or your new format
在你的例子中:
private function toLocalTime($dateInUTC)
{
// parse your date with carbon and set that as UTC
$date = Carbon::createFromFormat('Y-m-d H:i:s', $dateInUTC, 'UTC');
// set your timezone to get a local time.
$date->setTimezone('America/Argentina/Buenos_Aires'); // or your timezone
return = $date->format('Y-m-d H:i:s'); // or your new format
}
https://www.php.net/manual/en/timezones.php
如果您没有使用本机 php 安装 Carbon 作为示例:
private function toLocalTime($dateInUTC)
{
$utc_date = \DateTime::createFromFormat('Y-m-d H:i:s', $dateInUTC), new DateTimeZone('UTC'));
$utc_date->setTimeZone(new \DateTimeZone('America/Argentina/Buenos_Aires'); // or your timezone
return $utc_date->format('Y-m-d H:i:s'); // or your new format
}
推荐阅读
- javascript - 我想自动设置音频循环
- python - 如何选择一个
- python-3.x - 是否有图书馆可以使用 Robot Frmaework 连接我的终端?
- c - AES 加密 0x00 字符的问题
- python - 使用正则表达式从python中的文本中提取特定单词
- c++ - 排序算法正确性验证
- react-native - 如何在 react-native 中使用 react-native-image-crop-picker 选择多个图像
- android - GestureDetectorCompat 对事件没有反应
- swashbuckle - .NET Framework Swashbucket 示例 SwaggerRequestExample 引发 System.ArgumentNullException
- javascript - 将复选框的值作为空对象获取