如何添加不同的时间戳
How to add different timestamp
我在添加两 (2) 个时间戳时遇到问题,例如:
00:30:00
00:45:31
========
01:15:31
我不知道如何使用 laravel 和碳...
我的做法是制作 TimeHelper class,我在其中声明与时间计算相关的所有静态方法。
所以基本上我会在 TimeHelper class:
中创建这样的静态函数
public static function addTwoTimes($time1 = "00:00:00", $time2 = "00:00:00"){
$time2_arr = [];
$time1 = $time1;
$time2_arr = explode(":", $time2);
//Hour
if(isset($time2_arr[0]) && $time2_arr[0] != ""){
$time1 = $time1." +".$time2_arr[0]." hours";
$time1 = date("H:i:s", strtotime($time1));
}
//Minutes
if(isset($time2_arr[1]) && $time2_arr[1] != ""){
$time1 = $time1." +".$time2_arr[1]." minutes";
$time1 = date("H:i:s", strtotime($time1));
}
//Seconds
if(isset($time2_arr[2]) && $time2_arr[2] != ""){
$time1 = $time1." +".$time2_arr[2]." seconds";
$time1 = date("H:i:s", strtotime($time1));
}
return date("H:i:s", strtotime($time1));
}
因此,无论您需要求和两次,只需调用 TimeHelper::addTwoTimes(arg1, arg2);
我从这个主题中获取了用户 Cha 的示例函数:PHP add up two time variables
你不能像整数一样添加时间。其中一种方法是将其转换为另一种格式,然后添加。添加后,将其转换回时间类型。
例如,试试这个:
$time1 = "00:30:00";
$time2 = "00:45:31";
$secs = strtotime($time2) - strtotime("00:00:00");
$result = date("H:i:s", strtotime($time1) + $secs);
dd($result); // "01:15:31"
这就是您如何使用 Carbon 日期实现相加两次的方法。解释显示在行内注释
$time1 = '00:30:00';
$time2 = '00:45:31';
// Use the first time to crate a new Carbon date
$baseDate = Carbon::parse($time1);
// Deconstruct the second time into hours, minutes and seconds
list($addHour, $addMinutes, $addSeconds) = explode(':', $time2);
// Add the hours, minutes and seconds to the Carbon object
$baseDate->addHours($addHour)->addMinutes($addMinutes)->addSeconds($addSeconds);
// Print the result: 00:30:00 + 00:45:31 = 01:15:31
echo "{$time1} + {$time2} = " . $baseDate->toTimeString();
您可以使用 Carbon 库中的 CarbonInterval
class:
$durations = [
'00:30:00',
'00:45:31',
];
function getDuration($string)
{
[$hours, $minutes, $seconds] = explode(':', $string);
return CarbonInterval::hours($hours)->minutes($minutes)->seconds($seconds);
}
$total = getDuration(array_shift($durations));
foreach ($durations as $duration) {
$total->add(getDuration($duration));
}
echo $total->cascade()->format('%h:%i:%s'); // 1:15:31
我在添加两 (2) 个时间戳时遇到问题,例如:
00:30:00
00:45:31
========
01:15:31
我不知道如何使用 laravel 和碳...
我的做法是制作 TimeHelper class,我在其中声明与时间计算相关的所有静态方法。 所以基本上我会在 TimeHelper class:
中创建这样的静态函数public static function addTwoTimes($time1 = "00:00:00", $time2 = "00:00:00"){
$time2_arr = [];
$time1 = $time1;
$time2_arr = explode(":", $time2);
//Hour
if(isset($time2_arr[0]) && $time2_arr[0] != ""){
$time1 = $time1." +".$time2_arr[0]." hours";
$time1 = date("H:i:s", strtotime($time1));
}
//Minutes
if(isset($time2_arr[1]) && $time2_arr[1] != ""){
$time1 = $time1." +".$time2_arr[1]." minutes";
$time1 = date("H:i:s", strtotime($time1));
}
//Seconds
if(isset($time2_arr[2]) && $time2_arr[2] != ""){
$time1 = $time1." +".$time2_arr[2]." seconds";
$time1 = date("H:i:s", strtotime($time1));
}
return date("H:i:s", strtotime($time1));
}
因此,无论您需要求和两次,只需调用 TimeHelper::addTwoTimes(arg1, arg2);
我从这个主题中获取了用户 Cha 的示例函数:PHP add up two time variables
你不能像整数一样添加时间。其中一种方法是将其转换为另一种格式,然后添加。添加后,将其转换回时间类型。
例如,试试这个:
$time1 = "00:30:00";
$time2 = "00:45:31";
$secs = strtotime($time2) - strtotime("00:00:00");
$result = date("H:i:s", strtotime($time1) + $secs);
dd($result); // "01:15:31"
这就是您如何使用 Carbon 日期实现相加两次的方法。解释显示在行内注释
$time1 = '00:30:00';
$time2 = '00:45:31';
// Use the first time to crate a new Carbon date
$baseDate = Carbon::parse($time1);
// Deconstruct the second time into hours, minutes and seconds
list($addHour, $addMinutes, $addSeconds) = explode(':', $time2);
// Add the hours, minutes and seconds to the Carbon object
$baseDate->addHours($addHour)->addMinutes($addMinutes)->addSeconds($addSeconds);
// Print the result: 00:30:00 + 00:45:31 = 01:15:31
echo "{$time1} + {$time2} = " . $baseDate->toTimeString();
您可以使用 Carbon 库中的 CarbonInterval
class:
$durations = [
'00:30:00',
'00:45:31',
];
function getDuration($string)
{
[$hours, $minutes, $seconds] = explode(':', $string);
return CarbonInterval::hours($hours)->minutes($minutes)->seconds($seconds);
}
$total = getDuration(array_shift($durations));
foreach ($durations as $duration) {
$total->add(getDuration($duration));
}
echo $total->cascade()->format('%h:%i:%s'); // 1:15:31