php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger

PHP Einsteiger PHP Problemlösungen für Spracheinsteiger
Archive: 2004, 2004/2, 2005, 2005/2, 2006, 2007, 2008, 2009, 2010,

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 30.01.2012, 08:12  
Neuer Benutzer
 
Registriert seit: 18.08.2009
Beiträge: 20
PHP-Kenntnisse:
Fortgeschritten
anbei befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] Kleines Datumsproblem mit Folgemonat

Hallo zusammen,

heute ist mir ein kleines Problem bei meiner Berechnung des Folgemonats aufgefallen.

Heute ist der 30.01.2012. Ich berechnet den Folgemonat wie folgt:

PHP-Code:
<?php
$szDatumFolgeMonat 
strtotime "+1 month"strtotime date 'Y-m-d' ) ) );
?>
Leider ergibt

PHP-Code:
<?php
echo date 'Y-m-d' ,$szDatumFolgeMonat ) ;
?>
dann den 2012-03-01. Das ist aber (EDIT: für meine Anwendung) nicht korrekt. Was mache ich verkehrt? Bzw. wie kann ich diese Funktion auf einfache Weise passend machen (EDIT:, das ich z.B. auch am 30.01. den 28. bzw. 29. Februar rausbekomme?

Vielen Dank vorab
Andreas

Geändert von anbei (30.01.2012 um 09:05 Uhr).
anbei ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 30.01.2012, 08:47  
Erfahrener Benutzer
 
Registriert seit: 01.09.2010
Beiträge: 4.561
PHP-Kenntnisse:
Fortgeschritten
eagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Mensch
Standard

doch .. das ist voll korrekt - denn +1 month führt intern zum 30.februar, der wegen Schaltjahr zum 1ten März wird - in Nicht-Schaltjahren wäre das Ergebnis sogar 2ter März gewesen
was für ein Datum hättest du denn gern?
__________________
"Irren ist männlich", sprach der Igel und stieg von der Drahtbürste
eagle275 ist offline   Mit Zitat antworten
Alt 30.01.2012, 08:49  
Erfahrener Benutzer
 
Benutzerbild von Arne Drews
 
Registriert seit: 22.04.2009
Beiträge: 3.486
PHP-Kenntnisse:
Anfänger
Arne Drews wird schon bald berühmt werdenArne Drews wird schon bald berühmt werden
Arne Drews eine Nachricht über Skype™ schicken
Standard

Bei aktueller PHP-version sollte es auch so funktionieren:
PHP-Code:
$myDate = new DateTime'NOW', new DateTimeZone('Europe/Berlin') );
$myDate->add( new DateInterval('P1M') );
echo 
$myDate->format'Y-m-d' ); 
__________________
Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt.
Probleme kann man niemals mit derselben Denkweise lösen, durch die sie entstanden sind.
Albert Einstein
Arne Drews ist offline   Mit Zitat antworten
Alt 30.01.2012, 09:01  
Neuer Benutzer
 
Registriert seit: 18.08.2009
Beiträge: 20
PHP-Kenntnisse:
Fortgeschritten
anbei befindet sich auf einem aufstrebenden Ast
Standard

Mir ist klar, das die Rechnung korrekt ist.

Nur sollte für meine Anwendung in genau diese Fall (Heute ist 30. der Folgemonat hat nur <30 Tage, dito heute wäre der 31., der Folgemonat hat < 31 Tage), noch der "wirkliche" Folgemonat ( EDIT: hier: 2012-02-29 ) rauskommen.

Geändert von anbei (30.01.2012 um 09:07 Uhr).
anbei ist offline   Mit Zitat antworten
Alt 30.01.2012, 09:03  
Erfahrener Benutzer
 
Registriert seit: 01.09.2010
Beiträge: 4.561
PHP-Kenntnisse:
Fortgeschritten
eagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Mensch
Standard

es gibt aber keinen 30ten & 31ten Februar / keinen 31ten April - welchen Tag willst du denn als Ergebnis haben ?
__________________
"Irren ist männlich", sprach der Igel und stieg von der Drahtbürste
eagle275 ist offline   Mit Zitat antworten
Alt 30.01.2012, 09:07  
Neuer Benutzer
 
Registriert seit: 18.08.2009
Beiträge: 20
PHP-Kenntnisse:
Fortgeschritten
anbei befindet sich auf einem aufstrebenden Ast
Standard

Der 29.02.2012 wäre "logisch".
anbei ist offline   Mit Zitat antworten
Alt 30.01.2012, 09:28  
Erfahrener Benutzer
 
Registriert seit: 13.05.2011
Beiträge: 188
PHP-Kenntnisse:
Fortgeschritten
php1704 wird schon bald berühmt werden
Standard

Wenn es dir um den Monatsletzten geht kannst du auch das Format "last day of next month" verwenden.

Grüße.
php1704 ist offline   Mit Zitat antworten
Alt 30.01.2012, 09:40  
Erfahrener Benutzer
 
Benutzerbild von jspit
 
Registriert seit: 19.08.2011
Beiträge: 701
PHP-Kenntnisse:
Anfänger
jspit wird schon bald berühmt werden
Standard

Zitat:
Zitat von anbei Beitrag anzeigen
Der 29.02.2012 wäre "logisch".
Sehe ich nicht so. Du möchtest:
Das Datum mit den gleichen Tag im Folgemonat und wenn dieser nicht existiert, dann den letzten Tag des Folgemonats.
PHP-Code:
$heute strtotime date 'Y-m-d' ) ); //oder anderes Datum
$szDatumFolgeMonat strtotime "+1 month"$heute);
while( 
date("d",$heute) - date("d",$szDatumFolgeMonat) > 5$szDatumFolgeMonat strtotime "-1 day"$szDatumFolgeMonat);
echo 
date("Y-m-d",$szDatumFolgeMonat); 
Wenn es nur um den akt. Monat geht, kann man dies noch vereinfachen, -> Beitrag von php1704.

Edit: Also bei mir funktioniert auch:
PHP-Code:
$heute strtotime "30.1.2012" );
$szDatumFolgeMonat strtotime "+1 month"$heute);
if( 
date("d",$heute) != date("d",$szDatumFolgeMonat) ) $szDatumFolgeMonat strtotime "last day of next month"$heute);
echo 
date("Y-m-d",$szDatumFolgeMonat); 

Geändert von jspit (30.01.2012 um 10:01 Uhr).
jspit ist offline   Mit Zitat antworten
Alt 30.01.2012, 09:42  
Erfahrener Benutzer
 
Registriert seit: 01.09.2010
Beiträge: 4.561
PHP-Kenntnisse:
Fortgeschritten
eagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Mensch
Standard

nuja - nicht nach Datumarithmetik - wenn du unbedingt den letzten Tag des Februar haben willst, müsstest du

- Monat aus Datum extrahieren
- +1 draufzählen
- Modulo 12 nehmen
- letzten Tag des Monats ermitteln
- rücktransformieren in Datum

EDIT schreibt: der von php1704 angemerkte Funktionsaufruf bringt bei mir (CentOS 6) keinerlei Ausgabe ...
__________________
"Irren ist männlich", sprach der Igel und stieg von der Drahtbürste
eagle275 ist offline   Mit Zitat antworten
Alt 30.01.2012, 10:53  
meikel
Gast
 
Beiträge: n/a
Standard

http://mod.php.developer.vc/datum-7/

PHP-Code:
<?php

for ($month 1$month <= 12$month++){
    
$datum "2012-$month-15"# absichtlich auf Monatsmitte gesetzt
    
echo date('Y-m-d'strtotime('last day of next month'strtotime($datum))), BR;
}

?>
  Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Facebook API: kleines Layout-Problem BuRNHeLL1978 PHP Einsteiger 4 16.01.2012 10:58
Scriptsuche Für meine Seite wird ein kleines CMS benötigt. ThelastExit Scriptbörse 3 18.10.2011 23:22
suche kleines Projekt für externe Ausbildung zum Nulltarif Jonny2010 Freizeit 7 20.07.2011 10:13
Kleines Projekt sucht ein kleines CMS kenzuko Sonstige 3 19.07.2011 22:03
Suche: JAVA - Programmierer (kleines Projekt) Persie Sonstige 0 02.01.2011 00:30
[S] Programmierer für kleines Tool Keller99 Gewerblich 0 25.05.2010 18:04
Scriptsuche Suche Programmierer für kleines PHP MySQL Voting/Umfrage Script !!! Dominik995 Scriptbörse 0 18.11.2009 19:56
kleines Script? Gunnar2100 Scriptbörse 2 20.10.2009 14:52
PHP-Programmierer oder kleines Team für kurzfristigen Kundenauftrag gesucht. linoremmler Beitragsarchiv 0 22.12.2008 15:47
kleines Problem mit css layer Rotti HTML, Usability und Barrierefreiheit 0 08.12.2005 22:36
Kleines Replace Problem bei tpl Vars PHP Tipps 2005 1 12.04.2005 13:52
Suche für mySQL alternatives Backend, kleines CMS ? PHP Tipps 2005 10 24.01.2005 12:11
kleines Problem mit >date< PHP Tipps 2004-2 4 11.12.2004 19:42
kleines Problem PHP Tipps 2004-2 2 05.12.2004 09:44
n kleines problem PHP Tipps 2004 18 12.07.2004 21:13

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php dateinterval(p1m) february, rechnung zum 30. des folgemonats februar, was heißt zum 30 des folgemonats, php 1. teg des folgemonats ermitteln, php date folgemonat, php dateinterval schaltjahr, strtotime php schaltjahr, folgemonat date, php letzen tag des folgemonats, 30 des folgemonats, php folgemonat, php erster tag de folgemonats, ersten des folgemonats berechnen php, php datum 15 eines monats, php dateinterval(p1m) schaltjahr

Alle Zeitangaben in WEZ +2. Es ist jetzt 21:43 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum