php 小时分钟 大小,关于时间:使用PHP将分钟数转换为小时和分钟

这篇博客讨论了如何在PHP中将分钟数转换为小时和分钟的格式,例如将250分钟转换为4小时10分钟。提供了一个名为`convertToHoursMins`的函数,该函数通过取模和除法操作实现了这个转换。还包含了对不同解决方案的比较和改进,包括处理小时数为0的情况和确保分钟数始终为两位数。此外,还提到了使用DateTime扩展进行转换的可能性。
摘要由CSDN通过智能技术生成

我有一个名为$final_time_saving的变量,它只是几分钟,例如250。

如何使用此格式的PHP将分钟数转换为小时和分钟:

4 hours 10 minutes

这个数字是分钟计数吗? 250分钟!= 4小时17分钟

不,但谷歌搜索250分钟的小时数返回4.16666667小时,所以也许这就是罗布得到这个数字的地方?

可能重复转换秒到小时:分钟:秒

function convertToHoursMins($time, $format = '%02d:%02d') {

if ($time < 1) {

return;

}

$hours = floor($time / 60);

$minutes = ($time % 60);

return sprintf($format, $hours, $minutes);

}

echo convertToHoursMins(250, '%02d hours %02d minutes'); // should output 4 hours 17 minutes

代码之后的评论很有趣..从问题复制... 250分钟是4小时(240分钟)和10分钟,而不是17 :)

确实是。不知道为什么我这么写!离开它为后代:)

如果这只会在小时= 0时返回分钟,那就太好了。

@timpeterson这很容易实现。

@MartinBean谢谢我意识到这一点。我在谈论将代码添加到此示例中。

@timpeterson我认为这超出了这个答案的范围。以上并不意味着是一个使用中的情况助手。如果需要,OP可以考虑零值;以上应该足以让他们开始。

将格式更改为'%d:%02d'可能会有所帮助,因为像"6:1"这样的字符串并不像"6:01"那样有意义。

那几天呢?)

echo date('H:i', mktime(0,257));

大!很快!多谢兄弟!

最好的解决方案!另外,对于秒=>日期('H hi m:s s',mktime(0,0,$ totalSeconds))

错误的解决方案。不适用于> 24小时的时间,也取决于时区配置。这不是您正在使用的日期,请勿使用date功能。

这是问题的解决方案,但你是正确的,@ deceze,它不准确,周期超过24小时。但我不知道这是如何依赖于时区的。相反; gmmktime将返回本地偏移时间。

不可否认,如果您编写完全类似的代码,时区可能不会影响它。但是,由于时区恶作剧,很容易引入错误:3v4l.org/oH4ao

当你只需要转换一些整数并且你保持在24小时范围内时,这是完美的!

我怎样才能在几秒钟内完成这项工作?我试过跟随日期('H:我:s')..但这没有任何想法?

救救我...很棒......

这是一个误导性的解决方案,至少应该注意到这不会超过24小时。

$hours = floor($final_time_saving / 60);

$minutes = $final_time_saving % 60;

这实际上是最好的解决方案。不涉及任何日期功能

这应该是公认的答案。非常感谢。

您可以使用DateTime扩展来实现此目的,这也适用于大于一天(>= 1440)的分钟数:

$minutes = 250;

$zero    = new DateTime('@0');

$offset  = new DateTime('@' . $minutes * 60);

$diff    = $zero->diff($offset);

echo $diff->format('%a Days, %h Hours, %i Minutes');

demo

如果您有像12.99之类的分钟,这会中断

@Martin Bean的答案是完全正确的,但在我看来,它需要一些重构来适应普通用户对网站(网络系统)的期望。

我认为当分钟数低于10时,必须添加前导零。

例如:10:01,而不是10:1

我将代码更改为接受$time = 0,因为0:00优于24:00。

还有一件事 - 当$time大于1439时没有任何情况 - 这是23:59而下一个值只是0:00。

function convertToHoursMins($time, $format = '%d:%s') {

settype($time, 'integer');

if ($time < 0 || $time >= 1440) {

return;

}

$hours = floor($time/60);

$minutes = $time%60;

if ($minutes < 10) {

$minutes = '0' . $minutes;

}

return sprintf($format, $hours, $minutes);

}

好的,我同意会议记录需要一个领先的零。另一种方法是使用sprintf的填充功能:echo sprintf('%02d', 2); // this echos"02"

与分钟相同,我添加了几个小时,特别重要的是添加到数据库,所以mysql不会混淆

$t = 250;

$h = floor($t/60) ? floor($t/60) .' hours' : '';

$m = $t%60 ? $t%60 .' minutes' : '';

echo $h && $m ? $h.' and '.$m : $h.$m;

4小时10分钟

很抱歉提出了一个古老的主题,但我从其中一个答案中经常使用了一些代码,今天我告诉自己我可以不偷某人的代码就可以做到。我很惊讶它是多么容易。我想要的是在08:30返回510分钟,所以这就是代码所做的。

function tm($nm, $lZ = true){ //tm = to military (time), lZ = leading zero (if true it returns 510 as 08:30, if false 8:30

$mins = $nm % 60;

if($mins == 0)    $mins ="0$mins"; //adds a zero, so it doesn't return 08:0, but 08:00

$hour = floor($nm / 60);

if($lZ){

if($hour < 10) return"0$hour:$mins";

}

return"$hour:$mins";

}

我使用短变量名称,因为我将使用该函数很多,而且我很懒。

最简单的方法是:

gmdate('H:i', $numberOfSeconds * 60)

感谢@Martin_Bean和@Mihail Velikov的回答。我刚刚拿了他们的答案片段并添加了一些修改来检查,

如果只有小时可用且分钟值为空,则它将仅显示小时数。

如果仅"分钟"可用且小时值为空,则相同,则仅显示分钟。

如果分钟= 60,则显示为1小时。如果分钟= 1则相同,输出将为1分钟。

欢迎更改和编辑。

谢谢。这是代码。

function convertToHoursMins($ time){

$hours    = floor($time / 60);

$minutes  = ($time % 60);

if($minutes == 0){

if($hours == 1){

$output_format = '%02d hour ';

}else{

$output_format = '%02d hours ';

}

$hoursToMinutes = sprintf($output_format, $hours);

}else if($hours == 0){

if ($minutes < 10) {

$minutes = '0' . $minutes;

}

if($minutes == 1){

$output_format  = ' %02d minute ';

}else{

$output_format  = ' %02d minutes ';

}

$hoursToMinutes = sprintf($output_format,  $minutes);

}else {

if($hours == 1){

$output_format = '%02d hour %02d minutes';

}else{

$output_format = '%02d hours %02d minutes';

}

$hoursToMinutes = sprintf($output_format, $hours, $minutes);

}

return $hoursToMinutes;

}`

以防你想要的东西:

echo date('G \h\o\u

\s i \m\i

\u\t\e\s', mktime(0, 90)); //will return 1 hours 30 minutes

echo date('G \j\a\m i \m\e

\i\t', mktime(0, 90)); //will return 1 jam 30 menit

$m = 250;

$extraIntH = intval($m/60);

$extraIntHs = ($m/60);             // float value

$whole = floor($extraIntHs);      //  return int value 1

$fraction = $extraIntHs - $whole; // Total - int = . decimal value

$extraIntHss =  ($fraction*60);

$TotalHoursAndMinutesString  =  $extraIntH."h".$extraIntHss."m";

function hour_min($minutes){// Total

if($minutes <= 0) return '00 Hours 00 Minutes';

else

return sprintf("%02d",floor($minutes / 60)).' Hours '.sprintf("%02d",str_pad(($minutes % 60), 2,"0", STR_PAD_LEFT))." Minutes";

}

echo hour_min(250); //Function Call will return value : 04 Hours 10 Minutes

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值