TrankanMedlem sedan okt. 2006129 inlägg
Hej!
Jag har en kolumn i en databastabell som är av typen time. Skriver jag ut den här kolumnen på en sida så skrivs ju tiden i formatet 00:00:00. Jag skulle vilja att det istället skrevs som 0 h 0 min. Testade att använda substr till det här, men det blir lite inneffektivt eftersom jag ibland vill ha med båda siffrorna för timmarna och minutrarna, och ibland inte. Om timmarna eller minutrarna ligger på under tio så vill jag ta bort nollan i början, annars ska båda siffrorna användas. Någon som vet hur man löser det här på ett effektivt sätt?
PeeerMedlem sedan mars 20025 362 inlägg
Använd en kombination av date() och strtotime()
stevenetMedlem sedan juni 2000985 inlägg
Eller såhär: (Hittade inget sätt att få ut minuterna exklusive den inledande nollan med ovanstående funktioner, kanske missade?)
<?php
function removeZero ($unit) {
return ($unit < 10) ? substr($unit, -1) : $unit;
}
list($hours, $minutes, $seconds) = explode(":","01:05:00");
echo removeZero($hours)."h ".removeZero($minutes)."min";
?>
tydalMedlem sedan juni 20033 788 inlägg
Ta bort inledande nollor gör man enklast genom att typkonvertera till ett heltal då tal saknar inledande nollor:
$utanNollor = (int) "05";
TrankanMedlem sedan okt. 2006129 inlägg
stevenet skrev:
Eller såhär: (Hittade inget sätt att få ut minuterna exklusive den inledande nollan med ovanstående funktioner, kanske missade?)
<?php
function removeZero ($unit) {
return ($unit < 10) ? substr($unit, -1) : $unit;
}
list($hours, $minutes, $seconds) = explode(":","01:05:00");
echo removeZero($hours)."h ".removeZero($minutes)."min";
?>
Går det att lägga in den här funktionen i en variabel? Är rätt ny på PHP så jag är lite osäker på hur jag ska göra.
stevenetMedlem sedan juni 2000985 inlägg
tydal: ah, det är ju givetvis enklare. :)
Trankan skrev:
Går det att lägga in den här funktionen i en variabel? Är rätt ny på PHP så jag är lite osäker på hur jag ska göra.
Givetvis, förkortat med int (eller intval om du känner för det):
<?php
$gammalvariabel = "01:05:00";
list($hours, $minutes, $seconds) = explode(":",$gammalvariabel);
$nyvariabel = (int)$hours."h ".(int)$minutes."min";
?>
TrankanMedlem sedan okt. 2006129 inlägg
stevenet skrev:
tydal: ah, det är ju givetvis enklare. :)
Givetvis, förkortat med int (eller intval om du känner för det):
<?php
$gammalvariabel = "01:05:00";
list($hours, $minutes, $seconds) = explode(":",$gammalvariabel);
$nyvariabel = (int)$hours."h ".(int)$minutes."min";
?>
Fungerar bra förrutom ett par saker. Om antalet timmar eller minuter ligger på noll så skulle jag vilja att den delen inte skrivs ut. Skulle även vilja att ingenting alls visas om tiden ligger på 00:00:00. Går det här att lösa, eller blir det rörigt?
stevenetMedlem sedan juni 2000985 inlägg
TrankanMedlem sedan okt. 2006129 inlägg
stevenet skrev:
If-sats :)
Jo precis, det är väl vad jag har tänkt också. Problemet är bara att jag är så pass ny på PHP att jag inte vet hur jag ska bygga upp den. ;)
MeleaMedlem sedan juli 20032 667 inlägg
Varför inte köra det direkt i SQL-satsen?
select
date_format(time, \'%H h %i min\') as time
from
table
TrankanMedlem sedan okt. 2006129 inlägg
Melea skrev:
Varför inte köra det direkt i SQL-satsen?
select
date_format(time, \'%H h %i min\') as time
from
table
Jovisst, men om antalet minuter eller timmar är noll så vill jag ju kunna se till att just den uppgiften inte skrivs ut, samt att jag vill kunna ta bort eventuella begynnande nollor.
TrankanMedlem sedan okt. 2006129 inlägg
Melea skrev:
Varför inte köra det direkt i SQL-satsen?
select
date_format(time, \'%H h %i min\') as time
from
table
Jovisst, men om antalet minuter eller timmar är noll så vill jag ju kunna se till att just den uppgiften inte skrivs ut, samt att jag vill kunna ta bort eventuella begynnande nollor.
stevenetMedlem sedan juni 2000985 inlägg
Egentligen gör vi dig ingen tjänst om du inte kan något så grundläggande som en if-sats.
Läs "skola" på https://www.phpportalen.net och https://www.phpsidan.nu
På php.net: http://se2.php.net/manual/en/control-structures.if.php
Tills vidare:
<?php
$gammalvariabel = "00:05:00";
list($hours, $minutes, $seconds) = explode(":",$gammalvariabel);
$nyvariabel = "";
if($hours != "00") $nyvariabel .= (int)$hours."h ";
if($minutes != "00") $nyvariabel .= (int)$minutes."min";
echo $nyvariabel;
?>
TrankanMedlem sedan okt. 2006129 inlägg
stevenet skrev:
Egentligen gör vi dig ingen tjänst om du inte kan något så grundläggande som en if-sats.
En if-sats har jag koll på vad det är, men att använda den i praktiken i olika situationer har jag lite svårare med, eftersom man ofta måste inkludera funktioner och liknande som jag inte har koll på. Men men, jag lär mig med tiden hoppas jag. I vilket fall så fungerade scriptet bra, tack för hjälpen! :)