Tidkalkylator - Räkna ut tiden mellan två angivna tider

PHPportalen Forum Index » Kolla hemsidan!
Lägg ett bokmärke på hela tråden
Skapa nytt inlägg   Svara på inlägget
Visa föregående ämne :: Visa nästa ämne  
Startad av: Meddelande
clark-kim



Medlem i: 3115 dagar
Från: Luleå
Status: Offline



#737437
Inlägg Skrivet: 2014-07-19 14:12      Ämne: Tidkalkylator - Räkna ut tiden mellan två angivna tider Citera

Hej!

Jag har gjort en liten funktion som räknar ut tiden mellan två angivna tider. Säkert väldigt onödig, men kan vara skönt att använda om man inte orkar räkna.

Vill ha lite kritik på vad som helst.

http://tidkalkylator.se
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
harald_b
Moderator



Medlem i: 4659 dagar
Från: Tavesta
Status: Offline



#737438
Inlägg Skrivet: 2014-07-19 14:51      Ämne: Citera

Du använder en platshållare som ser ut som ett klockslag, vilket kan vara missvisande:
* Man kan lätt få intrycket att dessa är förifyllda värden
* När man räknat fram en tid så ser det ut som om det avser tiden mellan 8:00 och 16:00

Om du skall ha en platshållare så vore det bättre med tt:mm eller något i den stilen.
När man räknat ut ett värde vore det kanske en fördel om de tider man matat in ligger kvar.

Sedan, som du själv redan påpekat, så tycker jag det är lite i minsta laget för en sådan här webbsida att bara räkna ut tiden mellan två klockslag. Fyll gärna på med fler funktioner.
 

_________________
R.r - Ett fritt affärssystem
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
tsarraz



Medlem i: 2491 dagar

Status: Offline



#737439
Inlägg Skrivet: 2014-07-19 17:06      Ämne: Citera

Lägg gärna in en tid till.
Hur lång rast du haft under dagen.
Skulle min fru gilla då hon räknar ut sina timmar på jobbet
 

_________________
<marquee>Is the shit$e
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
ChristofferTyrefors



Medlem i: 2407 dagar
Från: Stockholm
Status: Offline



#737441
Inlägg Skrivet: 2014-07-19 22:10      Ämne: Citera

Jag prövade 22:00 till 07:00, dvs. hur långt är det tills jag ska gå upp? Resultatet blev -15 timmar vilket givetvis inte är korrekt. Den borde helt enkelt göra

KOD:
1:
 
2:
$end = ($start > $end) ? $end+24 : $end;
3:
 


Sen tycker jag att, när man fyllt i "timdelen" så lägger den automatiskt in 00 i fältet för minuter.
 

_________________
Jobbar med cyklar, Sockamore och annat.
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
clark-kim



Medlem i: 3115 dagar
Från: Luleå
Status: Offline



#737452
Inlägg Skrivet: 2014-07-21 14:27      Ämne: Citera

Tack för era svar. Har för övrigt gjort en android app med ungefär samma funktion.

https://play.google.com/store/apps/details?id=se.kimandersson.tidkalkylator

Vad tror ni om det?
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
EmilV
Ex-Moderator



Medlem i: 5927 dagar
Från: Lilla Edet
Status: Offline



#737455
Inlägg Skrivet: 2014-07-21 16:10      Ämne: Citera

Jag antar att den inte tar hänsyn till övergången mellan sommartid och normaltid? (Det gör inte min kropp heller...)

ChristofferTyrefors skrev:

KOD:
1:
 
2:
$end = ($start > $end) ? $end+24 : $end;
3:
 



Detta är annars tillfället då man använder abs
 

_________________
Tänk!

EmilVikström.se | Bloglovin.com
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
ChristofferTyrefors



Medlem i: 2407 dagar
Från: Stockholm
Status: Offline



#737457
Inlägg Skrivet: 2014-07-21 20:54      Ämne: Citera

EmilV skrev:
Jag antar att den inte tar hänsyn till övergången mellan sommartid och normaltid? (Det gör inte min kropp heller...)

ChristofferTyrefors skrev:

KOD:
1:
 
2:
$end = ($start > $end) ? $end+24 : $end;
3:
 



Detta är annars tillfället då man använder abs


Är du på allvar? Det var lite pseudo för att förklara att man måste titta på om "starttiden" är efter sluttiden, och isåfall utgå från att användaren avser två dygn.

Jag förstår inte hur detta är tillfället där man använder abs().

Ponera mitt exempel, 22 till 7. Diffen mellan dessa tider är 9 timmar. Om man (som det görs idag) bara tar 7-22 får man -15, och abs(-15) är givetvis 15 vilket alltså är fel.
 

_________________
Jobbar med cyklar, Sockamore och annat.
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
EmilV
Ex-Moderator



Medlem i: 5927 dagar
Från: Lilla Edet
Status: Offline



#737458
Inlägg Skrivet: 2014-07-21 21:31      Ämne: Citera

Det har du saklart ratt i. Slarvfel av mig. Modulo funkar dock (detta ar ocksa vad modulo matematiskt betyder). -15 % 24 === 9
 

_________________
Tänk!

EmilVikström.se | Bloglovin.com
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
harald_b
Moderator



Medlem i: 4659 dagar
Från: Tavesta
Status: Offline



#737459
Inlägg Skrivet: 2014-07-21 22:54      Ämne: Citera

Det verkar som den inte tar hänsyn till minuttalet på sluttiden när man paserar dygnsskiftet.
23:50 - 0:20 ger 0 timmar och 10 minuter

Det verkar även ske en konstig avrundning av timmarna:
23:10 - 23:50 ger 1 timma och 40 minuter, vilket jag tycker känns lite långsamt.

Jag hade nog angripit problemet genom att först räkna om starttid och sluttid till unix timestamp, och sedan subtraherat, kompenserat för eventuellt dygnsskifte och slutligen räknat om till timmar och minuter igen
 

_________________
R.r - Ett fritt affärssystem
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
EmilV
Ex-Moderator



Medlem i: 5927 dagar
Från: Lilla Edet
Status: Offline



#737461
Inlägg Skrivet: 2014-07-22 09:07      Ämne: Citera

harald_b skrev:
unix timestamp


Då kommer man in på komplexiteten med just sommartid (vi borde göra som Island och aldrig lämna normaltiden). Jag hade räknat om till enbart minuter:

PHP:
1:
 $startH = ...;
2:
$startM = ...;
3:
$endH = ...;
4:
$endM = ...;
5:
 
6:
$start 60 $startH $startM;
7:
$end 60 $endH $endM;
8:
 
9:
$diff = ($end $start) % 24;
10:
$diffH floor($diff 60);
11:
$diffM $diff 60


Lustigt att en så till synes enkel sajt drar så många kockar (och har så många buggar...).
 

_________________
Tänk!

EmilVikström.se | Bloglovin.com
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
harald_b
Moderator



Medlem i: 4659 dagar
Från: Tavesta
Status: Offline



#737462
Inlägg Skrivet: 2014-07-22 10:13      Ämne: Citera

EmilV skrev:
Då kommer man in på komplexiteten med just sommartid (vi borde göra som Island och aldrig lämna normaltiden).
Så länge man tillämpar sommartid i samhället i övrigt så är det här ett problem, oavsett hur man räknar.
I princip så måste man alltid tvinga användaren att ta ställning till ifall starttiden respektive sluttiden avser sommartid, ifall uträkningen skall bli helt "rätt".
Vad jag känner till så låter det sig inte göras på ett användarvänligt sätt, eftersom användaren inte alltid vet hur det förhåller sig med den saken.
I det här fallet hade jag nog valt UTC som tidszon vid omräkning till timestamp, och struntat i att lösa sommartidsproblemet.

Att göra som Island vore nog helt klart det bästa. Om man dessutom också väljer UTC som tidszon så skulle man få dygnsskiftet vid en lite bättre del av dygnet på köpet.
 

_________________
R.r - Ett fritt affärssystem
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
ChristofferTyrefors



Medlem i: 2407 dagar
Från: Stockholm
Status: Offline



#737463
Inlägg Skrivet: 2014-07-22 12:29      Ämne: Citera

Det finns ju också färdiga lösningar, typ http://php.net/manual/en/datetime.diff.php
 

_________________
Jobbar med cyklar, Sockamore och annat.
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
clark-kim



Medlem i: 3115 dagar
Från: Luleå
Status: Offline



#737481
Inlägg Skrivet: 2014-07-24 09:21      Ämne: Citera

Nu funkar det som det ska i alla fall!
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
Visa tidigare inlägg:   
Skapa nytt inlägg   Svara på inlägget
PHPportalen Forum Index » Kolla hemsidan!
Hoppa till:  
Du kan inte skapa nya inlägg i det här forumet
Du kan inte svara på inlägg i det här forumet
Du kan inte ändra dina inlägg i det här forumet
Du kan inte ta bort dina inlägg i det här forumet
Du kan inte rösta i det här forumet
Du kan inte bifoga filer i detta forum
Du kan inte ladda ner filer från detta forum
Kontakta oss på adressen: info@phpportalen.net
Webbplatsen bygger i grunden på phpBB © 2001, 2002 phpBB Group

Modifieringar har senare gjorts i systemet av PHPportalen
Sid och logotypdesign skapad av Daren Jularic