You are not logged in.

  • Login

1

Sunday, February 6th 2011, 7:07pm

X Minuten zu Datum hinzu addieren

Ich werd noch blöde hier!
Ich habe einen String "2011-02-06 15:47:26" (als Beispiel) und würde da gerne X Minuten drauf rechnen. Dabei kann X aber auch mal 2880 sein, was dann 2 Tagen entsprechen würde, X kann aber auch nur 5 sein, was eben nur 5 Minuten sind.
Nun dachte ich mir, ich bin doch bestimmt nicht der erste, der auf eine Datum + Zeit Variable einen bestimmten Wert addieren möchte, gibts doch bestimmt schon in fertig. Das PHP-Manual spuckt mir dazu auch diverseste Funktionen aus.
Ein DateTime Objekt soll angeblich die Methode add() haben, es soll die Funktion date_add() geben, . . .
So viele Möglichkeiten, und dann bekomm ich so schöne Meldungen wie: "Fatal error: Call to undefined function date_add()" oder "Fatal error: Call to undefined method DateTime::add()" ...
Das einzige was funktioniert ist "time()+$minuten*60". Nachteil: Das ist halt immer die aktuelle Zeit + X. Kann ich zwar auch mal brauchen, aber mir wäre es lieber, wenn ich vorgeben könnte, zu welcher Zeit er X addiert.

Hoffe man versteht was ich meine :)

2

Sunday, February 6th 2011, 7:24pm

PHP Quellcode

1
2
3
4
5
6
php > $zeit = new DateTime('2011-02-06 15:47:26');
php > echo $zeit->format('c');
'2011-02-06T15:47:26+01:00'
php > $zeit->add(new DateInterval('PT5M')); # 5 Minuten
php > echo $zeit->format('c');
'2011-02-06T15:52:26+01:00'

3

Sunday, February 6th 2011, 10:57pm

Ja, genau die Lösung habe ich auch gefunden...
"Fatal error: Call to undefined method DateTime::add()"
*Schulterzuck*

4

Sunday, February 6th 2011, 10:59pm

Welche PHP-Version ist auf dem Webserver installiert. Ich glaube du brauchst mindestens 5.3

5

Sunday, February 6th 2011, 11:16pm

Sofern du keine aktuelle Version von PHP zur Verfügung hast, kannst du auch den Weg über den Timestamp gehen:

PHP Quellcode

1
2
3
4
5
php > $zeit = strtotime('2011-02-06 15:47:26');
php > echo $zeit;
1297003646
php > echo date('c', $zeit + 5 * 60);
'2011-02-06T15:52:26+01:00'

6

Sunday, February 6th 2011, 11:17pm

Hm... plöd... grad mal nachgeschaut

Bash

1
PHP Version => 5.2.6-1+lenny9

Gäbs auch ne Lösung für Versionen vor 5.3?
Ich mein, wenns nicht über DateTime::ad() funktioniert soll mir das halt egal sein. Hauptsache es funktioniert überhaupt :)
Oder muss ich mir die Funktion echt selbst coden? *augenroll*

Edit: Ah, danke Florian! gleich mal ausprobieren :)

Edit2: Das funktioniert! Danke!
Jetzt weigert sich MySQL zwar meine Daten an zu nehmen, aber da muss ich mal schauen ob ich da noch hinter komme... Das hat ja hiermit nix zu tun :)

This post has been edited 1 times, last edit by "Lookbehind" (Feb 6th 2011, 11:35pm)


7

Monday, February 7th 2011, 10:58am

Jetzt weigert sich MySQL zwar meine Daten an zu nehmen, aber da muss ich mal schauen ob ich da noch hinter komme... Das hat ja hiermit nix zu tun :)


Du wirst Mühe haben, einen Timestamp (int(10)) in ein datetime-Feld zu speichern, vielleicht ist da der Fehler?

8

Monday, February 7th 2011, 4:44pm

Nene, als Timestamp kann ich die Daten gleich 3fach nicht gebrauchen. Dass ich die hinterher wieder umwandeln muss, war mir schon klar :)
Wo das Problem mit der DB lag, weiß ich grad gar nicht mehr. Hab inzwischen schon die nächsten 10 kleineren bis mittleren Probleme gelöst, und ganz vergessen, was da los war. Irgendwas triviales... n Tippfehler oder so...

Similar threads

Social bookmarks