Hallo,

Ik heb een timestamp die ik wil omzetten naar timestamp zonder dag-maand-jaar.

Heb ik nodig om te bepalen of de begintijd groter is dan de eindtijd.


$timestamp_vanaf = 1652025690;
$timestamp_tot = 1652054423;
$vanaf = strtotime( date( 'Hi', intval($timestamp_vanaf) ) );
$tot = strtotime( date( 'Hi', intval($timestamp_tot) ) );

if ($vanaf > $tot) {
  echo 'Begintijd is groter dan eindtijd';
}


Ik weet dat ik hiermee de timestamp omzet naar normaal datum-formaat, en dan weer terugzet naar timestamp.
Dus ik vraag me af, is dit een goede manier?

Guido
Dus als in:

15 mei 2004 15:41 is groter dan 31 dec 2022 10:04?
omdat
15:41 groter is dan 10:04



[size=xsmall]Toevoeging op 09/05/2022 13:02:00:[/size]

je hoeft dan trouwens niet gebruik te maken van strtotime():

1541 is al te vergelijken met 1004 (als in mijn voorbeeld).

Maar strtotime(1541) zal dan uitgaan van 1541 seconden na 1970-01-01 00:00, dus dat wordt vertaald naar globaal een 25 of 30 minuten. (aangenomen dat strtotime() daar al een soort van datum of tijd in herkent)
Hoi Ivo,

Dank voor je reactie. Ik besef me nu dat ik te moeilijk denk! strtotime hoeft inderdaad helemaal niet.

Ik hoef overigens alleen de waarde van "vanaf" met "tot" te vergelijken, meer niet. Dus de dag en een tijdzone zijn in mijn geval niet nodig.

Guido

dan zou ik sowieso niet het aantal seconden sinds 1970 gebruiken om zo'n tijdstip op te slaan.
Wat is er mis met 14:45 op te slaan

of 1445
Hoi Ivo,

Het betreft een datum/tijd kiezer dus die slaat het als timestamp op.

Ik kan de hele timestamp natuurlijk met elkaar vergelijken (start- vs einddatum), maar ik wil dit afzonderlijk ook voor de start- en eindtijd doen. Overigens sla ik niets op daarvan, de vergelijking is dus alleen om een (fout)melding te tonen als begintijd groter dan eindtijd is..

Guido
maar dan lijkt het me logisch dat ook de datum groter of gelijk aan de andere datum is.

dus de vergelijking

$timestamp_vanaf < $timestamp_totaan

zou dan al voldoende zijn.
Klopt helemaal, maar foutieve datum en tijd wil ik afzonderlijk van elkaar melden. Zodat duidelijk is welke onjuist is (datum of tijd).

Het is een eenvoudig script met invoervelden voor start- en einddatum + start- en eindtijd.
De start- en eindtijd is voor beide data hetzelfde. Dus beide timestamps bevatten dezelfde start- en eindtijd.

Guido
Je kan het input type time gebruiken.
Heb je direct de goede notatie.

 <input id="time" type="time" name="time" value="10:48" />


Als je 2 input velden voor tijd hebt en beide zijn ingevuld kan je de waarden omdraaien als begintijd groter is dan eindtijd.
Hoi,

Ik heb een select veld omdat ik de minuten in stappen van 5 wil (0, 5, 10, etc).

Overigens denk ik nu dat het logischer is om de begintijd aan de begindatum te koppelen en de eindtijd aan de einddatum. Nu gebruik ik tijd los van de datum.

Guido
Als je er twee DateTimes van maakt, kun je daarna met een DateInterval gemakkelijk datums én tijden vergelijken:


<?php
$timestamp_from  = 1652025690;
$timestamp_until = 1652054423;

$from = new \DateTime();
$from->setTimestamp($timestamp_from);

$until = new \DateTime();
$until->setTimestamp($timestamp_until);

$interval = $from->diff($until);
?>

Reageren