gpt4 book ai didi

php - DB2 时间戳 PHP 日期时间

转载 作者:行者123 更新时间:2023-12-02 13:49:37 24 4
gpt4 key购买 nike

升级到 PHP 5.3 后,我的应用程序返回时间戳类型为“2010-12-15-10.23.22.716000”的 DB2 列。这导致 PHP DateTime 函数出现问题,因为它失败了

$time = new DateTime("2010-12-15-10.23.22.716000");

Failed to parse time string (2010-12-15-10.23.22.716000) at position 25 (0): Unexpected character

DB2 时间戳似乎存在太精确的问题。我可以以某种方式强制连接更改时间戳格式以获取数据吗?

我正在使用 db2_connect 函数连接到数据库,如下所示:

$this->connection = db2_connect ( $config ['dsn'], $config ['username'], $config ['password'] );

编辑:我想使用下面提到的解决方案,但它对我不起作用,并且在我的系统(AS400)上运行很奇怪。我有: $timeRec = DateTime::createFromFormat('Y-m-d-h.i.s.u',$value);

$value = $timeRec->format('Y-m-d H:i:s');

$value = new DibiDateTime($value);

如果我在 ->format 之后执行 var_dump($value) ,则会返回正确的字符串,但如果我尝试将此字符串提供给 DibiDateTime,则会出现:

public function __construct($time = 'now', DateTimeZone $timezone = NULL)
{
if ($timezone === NULL) {
parent::__construct($time);
}
}

然后失败:

function format() on a non-object

即使我之前用 var_dump($timeRec) 检查过是否是正确的 DateTime 对象。

最佳答案

我认为你的函数(无论它是什么)在日期字符串末尾的微秒上令人窒息。使用 DateTime::createFromFormat() 函数通过“u”微秒标签来处理此问题。看到这里http://php.net/manual/en/function.date.php

$time = DateTime::createFromFormat('Y-m-d-h.i.s.u', '2010-12-15-10.23.22.716000');
var_dump($time);

我的系统上的输出:-

object(DateTime)[1]
public 'date' => string '2010-12-15 10:23:22' (length=19)
public 'timezone_type' => int 3
public 'timezone' => string 'UTC' (length=3)

关于php - DB2 时间戳 PHP 日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12654051/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com