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小时 所有时间的格式都相同。使用它很简单: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 =
$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,它将无法正常工作。