我正在读取一个excel文件,其列的值类似于“ 1:45:00。但是当print_r($value["time"])
从我的数组中获得此值时,我得到了一个Carbon对象,如下所示:
Carbon\Carbon Object
(
[date] => 2018-10-30 01:45:00.000000
[timezone_type] => 3
[timezone] => America/US
)
然后,当我将一个值插入大容量数组时:
"time"=>$value["time"]
在数据库中,我得到:2018-10-30 01:45:00
如何只插入01:45:00
而不插入整个时间戳?
编辑:我以为$value["time"]->date->format("H:i:s")
可以工作,但出现错误“试图获取非对象的属性'日期'”
编辑2:这就是我读取数据的方式:
excel就像:
date time
---------- -------
30-10-2018 01:45:00
我阅读excel的代码:
$data = Excel::selectSheetsByIndex(0)->load($path, function($reader) {
})->get()->toArray();
foreach ($data as $key => $value) {
$time = Carbon::createFromFormat('Y-m-d h:i:s',$value["time"])->format('h:i:s');
print_r($time);
die();
}
输出:
Call to a member function format() on null
答案 0 :(得分:1)
您需要的是此处的格式:
$dt = Carbon::now();
$dt->toTimeString(); //14:15:16
答案 1 :(得分:0)
Carbon \ Carbon是php的DateTime的扩展,因此您可以在php.net阅读以了解更多信息。
尽管/\b(?!Co\.)Co(?:lorado)?\b/i
不是一个有效的时区,所以确实有些问题。
无论如何
在数据库中我得到:2018-10-30 01:45:00
如果您的数据类型是TIMESTAMP或DATETIME,则mysql在该列中将始终具有日期成分。
首先,让我们花些时间isEnabled
数组,使其余讨论更容易理解和调试:
America/US
从现在开始,无需注意var_dump显示的内部字段。它们实际上可能会或可能不会真正存在于对象中。使用上面链接或Carbon docs中记录的文档最多的接口方法。否则,var_dump给出的字段会使您感到困惑。
如果只想将一天中的时间表示为字符串,则可以使用DateTime :: format()方法:
$value
请注意,如果您在具有DATETIME列类型的数据库中插入该字符串,则它将不起作用。 Mysql将需要一个包含日期信息的字符串。
后面的代码段似乎与上面显示的代码不匹配:
$time = $value["time"];
您正在尝试使用createFromFormat()方法创建Carbon实例。您提供的第一个参数告诉Carbon(实际上是DateTime)输入字符串的格式是什么。您提供的数据是$timestr = $time->format('H:i:s');
(假设从Excel工作表的时间列中读取了$ value [“ time”]),但是您要告诉Carbon您将给它$data = Excel::selectSheetsByIndex(0)->load($path, function($reader) {
})->get()->toArray();
foreach ($data as $key => $value) {
$time = Carbon::createFromFormat('Y-m-d h:i:s',$value["time"])->format('h:i:s');
print_r($time);
}
。由于您保证的格式与您提供给对象的数据不匹配,因此将为null。
两者之一(为了清晰起见,分为若干步骤):
H:i:s
或
Y-m-d h:i:s
将起作用。
第二个为您提供了一个更有用的Carbon对象-第一个可能默认为零年。在这两种情况下,时区都是运行代码的计算机所在的区域。您可以根据需要覆盖它。
请注意,如果我感到困惑,并且Excel阅读器实际上返回的是Cabon对象而不是字符串,则可以完全消除整个$time = Carbon::createFromFormat('H:i:s', $value["time"]);
$timestr = $time->format('h:i:s');
代码。用Carbon对象制成Carbon对象毫无意义。