Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 数小时_Php - Fatal编程技术网

Php 数小时

Php 数小时,php,Php,我有类似的例子:01:06:22这代表1小时6分22秒。我想把它乘以6,再加上其他时间,比如04:23,是凌晨4点23分,不是4小时23分 基本上,因此我预计: 01:06:22 *6=6小时38分钟,取消本例中剩余的12秒 现在,我想把它附加到其他时间,这里是04:23,结果是: 11:01 不幸的是,我不知道如何开始和做这件事 感谢您的帮助 澄清 我必须乘以6的时间永远不会超过2小时 所有时间的格式都相同。使用它很简单: $time = '01:06:22'; $dateSeconds =

我有类似的例子:01:06:22这代表1小时6分22秒。我想把它乘以6,再加上其他时间,比如04:23,是凌晨4点23分,不是4小时23分

基本上,因此我预计:

01:06:22 *6=6小时38分钟,取消本例中剩余的12秒

现在,我想把它附加到其他时间,这里是04:23,结果是: 11:01

不幸的是,我不知道如何开始和做这件事

感谢您的帮助

澄清 我必须乘以6的时间永远不会超过2小时

所有时间的格式都相同。

使用它很简单:

$time = '01:06:22';
$dateSeconds = new DateTime("1970-01-01 $time UTC");
$seconds = $dateSeconds->getTimestamp() * 6;
$interval = new DateInterval('PT'.$seconds.'S');
$date = new DateTime('1970-01-01 04:23:00 UTC');
$date->add($interval);
echo $date->format('H:i:s');
和的其他解决方案。与Suresh类似,但工作正常:

$date = strtotime('1970-01-01 01:06:22 UTC');
$add = strtotime('1970-01-01 04:23:00 UTC');
$date = (($date*6)+$add);
echo gmdate('H:i:s', $date);
使用它很简单:

$time = '01:06:22';
$dateSeconds = new DateTime("1970-01-01 $time UTC");
$seconds = $dateSeconds->getTimestamp() * 6;
$interval = new DateInterval('PT'.$seconds.'S');
$date = new DateTime('1970-01-01 04:23:00 UTC');
$date->add($interval);
echo $date->format('H:i:s');
和的其他解决方案。与Suresh类似,但工作正常:

$date = strtotime('1970-01-01 01:06:22 UTC');
$add = strtotime('1970-01-01 04:23:00 UTC');
$date = (($date*6)+$add);
echo gmdate('H:i:s', $date);

如果您想自己实现它,这是一个解决方案

关于时间码的事情是,若你们做得不好,它可能会变得非常沉重

我想到的处理这个问题的最好办法是把所有的东西都转换成秒

所以01:06:22会变成:

numberOfSecond = 22 + 06 * 60 + 01 * 60 * 60
如何从字符串中获取22、06等?你可以使用正则表达式

您需要什么:

一个函数,用于提取小时、分钟、秒的不同值 将时间码转换为秒的函数 转换回时间码的函数 乘法、加法等函数。。。
您可能想为它创建一个类。

如果您想自己实现它,这是一个解决方案

关于时间码的事情是,若你们做得不好,它可能会变得非常沉重

我想到的处理这个问题的最好办法是把所有的东西都转换成秒

所以01:06:22会变成:

numberOfSecond = 22 + 06 * 60 + 01 * 60 * 60
如何从字符串中获取22、06等?你可以使用正则表达式

您需要什么:

一个函数,用于提取小时、分钟、秒的不同值 将时间码转换为秒的函数 转换回时间码的函数 乘法、加法等函数。。。 您可能想为它创建一个类。

您可以这样尝试:

$date = strtotime('01:06:22');
$add = strtotime('00:04:23');
$date = ($date*6)+$add;
echo date('H:i:s', $date);
注意:代码未经测试。

您可以这样尝试:

$date = strtotime('01:06:22');
$add = strtotime('00:04:23');
$date = ($date*6)+$add;
echo date('H:i:s', $date);

注意:代码未经测试。

首先,您需要将时间跨度乘以一个系数。最简单的方法是将量程转换为秒,然后直接乘法:

$date =DateTime::createFromFormat('!H:i:s', '01:06:22', new DateTimeZone('UTC'));
$seconds = $date->getTimestamp();
这段代码的工作原理是假装时间是Unix纪元开始期间的一个时刻,以便它可以获得从纪元开始到时间戳所经过的秒数。该数字等于时间跨度的持续时间(以秒为单位)。但是,输入应解释为UTC时间,而不是本地时区中的某个时间,这一点至关重要

只要输入的格式正确,就可以采用一种技术含量较低但可能不太容易出现错误的等效方法

list($h, $m, $s) = explode(':', '01:06:22');
$seconds = $h * 3600 + $m * 60 + $s;
现在乘法:

$seconds = $seconds * 6;
如果您只想保留本阶段可以保留的时间的整分钟:

$seconds = $seconds - $seconds % 60;

将结果添加到给定时间的最后一步尚未明确指定-参考时间是否包含日期信息?如果加起来超过24小时会发生什么情况?

首先,您需要将时间跨度乘以一个因子。最简单的方法是将量程转换为秒,然后直接乘法:

$date =DateTime::createFromFormat('!H:i:s', '01:06:22', new DateTimeZone('UTC'));
$seconds = $date->getTimestamp();
这段代码的工作原理是假装时间是Unix纪元开始期间的一个时刻,以便它可以获得从纪元开始到时间戳所经过的秒数。该数字等于时间跨度的持续时间(以秒为单位)。但是,输入应解释为UTC时间,而不是本地时区中的某个时间,这一点至关重要

只要输入的格式正确,就可以采用一种技术含量较低但可能不太容易出现错误的等效方法

list($h, $m, $s) = explode(':', '01:06:22');
$seconds = $h * 3600 + $m * 60 + $s;
现在乘法:

$seconds = $seconds * 6;
如果您只想保留本阶段可以保留的时间的整分钟:

$seconds = $seconds - $seconds % 60;
将结果添加到给定时间的最后一步尚未明确指定-参考时间是否包含日期信息?如果添加超过24小时会发生什么情况?

不言自明:

$initialTime = '01:06:22';

$timeToAdd = '04:23';

$initialTimeExploded = explode( ':' ,$initialTime );

$initialTimeInMintues = ( $initialTimeExploded[0] * 60 ) + $initialTimeExploded[1];

$initialTimeInMintuesMultipliedBySix = $initialTimeInMintues * 6;

$timeToAddExploded = explode( ':' ,$timeToAdd );

$timeToAddExplodedInMintues = ( $timeToAddExploded[0] * 60 ) + $timeToAddExploded[1];

$newTimeInMinutes = $initialTimeInMintuesMultipliedBySix + $timeToAddExplodedInMintues;

$newTime = floor( $newTimeInMinutes / 60 ) .':' .($newTimeInMinutes % 60);

echo $newTime;
结果:

10:59
不言自明:

$initialTime = '01:06:22';

$timeToAdd = '04:23';

$initialTimeExploded = explode( ':' ,$initialTime );

$initialTimeInMintues = ( $initialTimeExploded[0] * 60 ) + $initialTimeExploded[1];

$initialTimeInMintuesMultipliedBySix = $initialTimeInMintues * 6;

$timeToAddExploded = explode( ':' ,$timeToAdd );

$timeToAddExplodedInMintues = ( $timeToAddExploded[0] * 60 ) + $timeToAddExploded[1];

$newTimeInMinutes = $initialTimeInMintuesMultipliedBySix + $timeToAddExplodedInMintues;

$newTime = floor( $newTimeInMinutes / 60 ) .':' .($newTimeInMinutes % 60);

echo $newTime;
结果:

10:59

如果我们有06:12:30这样的时间,我们需要乘以6呢?倍增后,它是适当的。37:12:30那么是第二天了?时间码字符串的格式总是一样的吗?在这种情况下,您可以检测哪种情况是第一种情况,或者是第二种情况,然后进行计算。一般来说,要操作时间码,最简单的事情就是把所有的时间都转换成秒,然后进行计算。@SureshKamrushi我忘了提到,我必须乘以6的小时永远不会超过2小时。在任何情况下,你应该把所有的时间都转换成秒。乘或其他什么,然后把它放回右边
马特。那会帮你省点钱trouble@dyesdyes我已经编辑了我的帖子。顺便说一句,我甚至不知道如何开始我正在寻找的,所以如果你能扔给我一根骨头,那将是伟大的,如果我们有时间像06:12:30比我们需要乘以6?倍增后,它是适当的。37:12:30那么是第二天了?时间码字符串的格式总是一样的吗?在这种情况下,您可以检测哪种情况是第一种情况,或者是第二种情况,然后进行计算。一般来说,要操作时间码,最简单的事情就是把所有的时间都转换成秒,然后进行计算。@SureshKamrushi我忘了提到,我必须乘以6的小时永远不会超过2小时。在任何情况下,你应该把所有的时间都转换成秒。乘法或其他什么,然后把它放回正确的格式。那会帮你省点钱trouble@dyesdyes我已经编辑了我的帖子。顺便说一句,我甚至不知道如何开始我正在寻找的东西,所以如果你能扔给我一根骨头,那就太棒了。这个代码取决于默认的时区值;如果不是UTC,它将无法正常工作。此代码取决于默认时区值;如果不是UTC,它将无法正常工作。