【问题标题】:Wrong timestamp in laravellaravel 中的时间戳错误
【发布时间】:2020-07-03 12:03:02
【问题描述】:

我从 MySQL 得到错误的时间戳格式/时区作为回报。在 MySQL 中,时间是准确和正确的,但是当我从 MySQL 中选择它时,我得到了这样的结果

2020-03-22T19:00:04.000000Z

但是,我的数据库表中有这个

2020-03-22 07:00:02

我用来从 db 获取结果的查询是:

Stats::select('created_at','total_cases','recovered','critical','deaths','islamabad' ,'punjab','sindh','kp','balochistan','ajk','gb')->whereDate('created_at', $date)->get();

【问题讨论】:

  • 看看this是否有帮助。
  • db时间是24小时制吗?

标签: php mysql laravel eloquent


【解决方案1】:

您必须申请date_format() 以根据您想要的格式打印从数据库返回的日期。这是一个例子:

$date=date_create("2020-03-22T19:00:04.000000Z");
echo date_format($date,"Y/m/d H:i:s");
#output 2020/03/22 19:00:04

【讨论】:

  • 你知道 OP 说的是时间不匹配而不是格式吗?
  • 实际上时间匹配:在第一次给出时应用date_format(),您会看到与问题第二部分给出的时间相同
  • 我正在使用 laravel,我从数据库中获取的时间是公共 api,所以我需要像在数据库中一样获取它
  • 那么您到底想要什么:您是否将日期作为参数传递并且您不知道如何格式化它以便它从数据库返回结果,或者您想将其显示为您的您的问题中显示的第一个日期?
  • PHP 时间是 19:00:04,而 db 时间是 07:00:02。我看不出这是如何通过格式化来修复的。时区需要修改。
【解决方案2】:

您可以使用mysql的DATE_FORMAT函数来格式化您的日期,如下所示:

$data  =  Stats::select(DB::raw('DATE_FORMAT(created_at, "%Y-%m-%d %H:%i:%s") as formatted_dob'), 'total_cases','recovered','critical','deaths','islamabad'
    ,'punjab','sindh','kp','balochistan','ajk','gb')
    ->whereDate('created_at', $date)
    ->get();

参考:

MySQL -> date and time function -> date_format

【讨论】:

  • 这也不会解决时区不匹配问题,但我向直接在 MySQL 中完成的格式化致敬。
猜你喜欢
  • 2020-11-23
  • 1970-01-01
  • 1970-01-01
  • 2022-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多