mktime mit current_time

Status
Dieses Thema wurde gelöst! Zur Lösung gehen…

Loddar1

Erfahrenes Mitglied
Hallo ihr lieben,
ich habe schon gesucht aber nichts gefunden.

Bisher habe ich Datum mit time() gemacht also unix in DB steht zB.: 2147483647
Jetzt probiere ich current_time in DB steht z.B.: 2022-01-25 15:38:23
Speichern und ausgeben funktioniert wunderbar aber in meinem script steht
PHP:
if (date("d.m.y", $t['ldatum'])== date("d.m.y",time())) $today='Heute';
$gestern=mktime(0,0,0,date("m", time()),date("d", time()),date("Y", time()));
if ($t['ldatum'] < $gestern && $t['ldatum']> $gestern-86400)$yestern='Gestern';
if ($datum<= $gestern-86400)$datum=date("d.m.y", $t['ldatum']);$zeit=date(" G:i", $t['ldatum']);
$t['ldatum'] ist aus DB
das geht so aber nur mit time(),
weis einer wie das mit current_time funktioniert? oder wo ich das finde wie es gemacht wird?

für gute antworten würde ich mich freuen.

Gruß Loddar1
 

Yaslaw

alter Rempler
Moderator
Einfache Convertierungen in PHP
PHP:
$mysqldate = date( 'Y-m-d H:i:s', $phpdate );
$phpdate = strtotime( $mysqldate );
Oder im SQL
SQL:
SELECT UNIX_TIMESTAMP(datetimefield) FROM my_tableE;

Analog mit current_time(), das ja kein Datum beinhaltet und das FOrmat ein wneig anders ist. H-i-s
MySQL CURRENT_TIME() Function
 

Yaslaw

alter Rempler
Moderator
Danke Yaslaw aber mktime bringt einen error und time() wird auch nicht akzeptiert.
In deiner Zeile 2, da liegt der Fehler. mktime() geht nicht direkt in der Datenbank. Auch in der Cloud nützt sie nichts. Du musst mktime() so anwenden wir in meinem Beispiel.

Du hast keine Ahnung was ich da geschrieben habe? Ich auch nicht. Aber genausoviel verstehe ich von deinem Post. In meinenen Hinweisen kommt kein mktime() vor. Auch kein time(). Was also hast du da wirklich getestet?
Und ich bin sicher, es gäbe eine elegantere Lösung, aber da dein Code keinerlei Komentare beinhaltet, ist mir nicht ersichtlich was der Code überhaubt machen soll.
Grundsätzlich hat @m.scatello recht. Datum und Zeit ist in PHP absoluter Schrott. Besser das ganze gleich in SQL lösen.
 

Yaslaw

alter Rempler
Moderator
Ansonsten mal debuggen
PHP:
$t['ldatum'] = '2022-01-25 15:38:23';

echo $t['ldatum'];
echo '<br />';
echo date("d.m.y", $t['ldatum']);
echo '<br />';
echo date("d.m.y",time());
Ausgabe:
Code:
2022-01-25 15:38:23
01.01.70
26.01.22
WIe man sieht, geht das mit dem date() nicht.
Würdest du meinen Vorschlag mit strtotime befolgen, würde es funktionieren
PHP:
$t['ldatum'] = '2022-01-25 15:38:23';
$timestampUnix= strtotime($t['ldatum']);
echo date('c', $timestampUnix);  //2022-01-25T15:38:23+00:00

Und hier noch mit DIfferenzrechnungen, Datum aus Timestamp lösen etc
PHP:
$t['ldatum'] = '2022-01-25 15:38:23'; 
//In PHP/Unixtimestamp wandeln (Sekunden ab 1970) 
$timestampUnix = strtotime($t['ldatum']); 
echo date('c', $timestampUnix);     //2022-01-25T15:38:23+00:00
//Uhrzeit entfernen 
$ldateUnix = truncDate($timestampUnix); 
echo date('c', $ldateUnix);         //2022-01-25T00:00:00+00:00
//Der Tag davor 
echo date('c', strtotime('-1 day', $ldateUnix)); //2022-01-24T00:00:00+00:00
/** 
 * Entfernt die Uhrzeit aus einem Unixtimestamp 
 * @param Unixtimestamp 
 * @return Unixtimestamp 
 */ 
function truncDate($unixTimestamp){return $unixTimestamp - $unixTimestamp % (24*60*60); }
 

Loddar1

Erfahrenes Mitglied
Danke Yaslaw deinen letzten post kann ich verstehen das ist das was ich wissen wollte.
Jetzt kann ich damit experimentieren.
Vielen Dank
Gruß Loddar1
 
Status
Dieses Thema wurde gelöst! Zur Lösung gehen…