| | | | |
| |||||||
| | LinkBack | Themen-Optionen | Thema bewerten |
| | |
| PHP Code Flüsterer Registriert seit: 21.08.2005 Beiträge: 4682 PHP-Kenntnisse: Fortgeschritten | |
| | |||
| Erfahrener Benutzer Registriert seit: 21.05.2008
Beiträge: 9.937
![]() | Zitat:
Habe gerade keine Zeit dafür. | ||
| |
| | |
| Benutzer Registriert seit: 14.02.2006
Beiträge: 49
![]() | Ich glaube in der Funktion muss es statt 0 als Tagesangabe eher 1 heißen: Code: $firstWeekday = date('j', strtotime("next $weekday", mktime(0, 0, 0, $month, 1, $year)));
|
| |
| | ||
| moderatives Dielektrikum Registriert seit: 21.05.2008
Beiträge: 34.256
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() | Möglich. Das macht für das Bsp. aber keinen Unterschied, oder? Jedenfalls ist die Reihenfolge einfach falsch. Richtig: PHP-Code: Zitat:
| |
| |
| | |||
| Benutzer Registriert seit: 14.02.2006
Beiträge: 49
![]() | Zitat:
Zitat:
Code: function getDateByWeekdayx($year, $month, $weekday, $count)
{
$firstWeekday = date('j', strtotime("next $weekday", mktime(0, 0, 0, $month, 1, $year)));
$requestedDay = $firstWeekday + ($count - 1) * 7;
return date('Y-m-d', mktime(0, 0, 0, $month, $requestedDay, $year));
}
| ||
| |
| | |
| Benutzer Registriert seit: 14.02.2006
Beiträge: 49
![]() | Hallo. Habe doch noch ein Problem. Auf meinem lokalen Server (XAMPP) ergibt die Funktion das richtige Ergebnis: Der erste Samstag im September ist der 01-09-2007. Lasse ich aber gleichen Code im Internet laufen wird eine Woche später ausgegeben: 08-09-2007. Wie kommt das bzw. woran kann das liegen? Irgendwelche globalen Einstellungen? Auch bei der 2. oder 3. Woche werden je 7 Tage zuviel angezeigt - zumindest online. Ist das bei Euch auch so? NACHTRAG - Muss wohl am Hoster liegen. Habe gleiches Skript bei 2 "großen" Anbietern getestet und da kommt das richtige Ergebnis raus. Mal sehen was der kleinere Hoster dazu sagt. Code: $test1 = "2007"; $test2 = "9"; $test3 = "Saturday"; $test4 = "1"; echo getDateByWeekday($test1, $test2, $test3, $test4); //08-09-2007 im www |
| |
| | ||
| Erfahrener Benutzer Registriert seit: 21.05.2008
Beiträge: 9.937
![]() | Zitat:
Egal was du für Daten berechnen möchtest, mit strtotime() und mktime() solltest du dich auskennen oder zumindest wissen, dass die Funktionen Potenzial haben, das man kennen sollte. Vor allem die User-Notes zu strtotime() sind sehr interessant. | |
| |
| | |||
| Benutzer Registriert seit: 14.02.2006
Beiträge: 49
![]() | Zitat:
(Falsches) Ergebnis bei 0: 30.5.2007. Richtiges Ergebnis bei 1: 07.05.2007. Code: $jahr = "2007";
$monat = "5";
$tag = "Monday";
$folge = "1";
echo getDateByWeekday($jahr, $monat, $tag, $folge);
function getDateByWeekday($year, $month, $weekday, $count)
{
$firstWeekday = date('j', strtotime("next $weekday", mktime(0, 0, 0,$month, 0, $year)));
$requestedDay = $firstWeekday + ($count - 1) * 7;
return date('Y-m-d', mktime(0, 0, 0, $month, $requestedDay, $year));
}
Code: function getDateByWeekday($year, $month, $weekday, $count)
{
$firstWeekday = date('j', strtotime("next $weekday", mktime(0, 0, 0,$month, 1, $year)));
$requestedDay = $firstWeekday + ($count - 1) * 7;
return date('Y-m-d', mktime(0, 0, 0, $month, $requestedDay, $year));
}
- gerade/ungerade?, - einstellig/zweistellig? - Monatswechsel am Wochenende?) die eine oder andere Funktion genommen werden muss? | ||
| |
| | |
| Erfahrener Benutzer Registriert seit: 21.05.2008
Beiträge: 9.937
![]() | Scheint versionsabhängig zu sein, PHP 5.2.3 liefert bei 0 das korrekte Ergebnis 2007-05-07, PHP 4.4.7 liefert fälschlicherweise 2007-04-30. Gegebenenfalls musst du die Parameter von mktime() eben versionsabhängig setzen oder das Endergebnis um eine Woche verlängern. Oder du machst das ganze nicht mit "next $weekday". |
| |
| | |
| Benutzer Registriert seit: 14.02.2006
Beiträge: 49
![]() | Habe es jetzt so gelöst, sicherlich etwas kompliziert, aber dafür bislang verlässlich: Ausgangslage ist ein Startdatum, aus dem ich ermittel, welcher Wochentag und der wievielte Wochentag das in dem Start-Monat ist. Über eine while-Schleife zähle ich ab diesem Tag immer 7 Tage dazu, bis ich auf das heutige Datum (+1 Monat drauf) komme. Zu jedem dieser 7-Tage berechne ich mit folgender Formel, um den wievielten Wochentag es sich dabei im Monat handelt. a) Ermittel den letzten des Vormonats: b) Subtrahiere das (7-Tage-)Datum der Schleife vom Vormonatsletzen (in Tagen) = $difftage c) Code: floor(($difftage+6)/7) Da ich mein Array gleich für die nächsten Wochen ab heute gefüllt habe, kann ich nun sagen: Gib mir im Monat "09" das Datum wo die Wochentagsnummer stimmt und wenn dieses Datum bereits vorbei ist, nimm das im nächsten Monat. |
| |
| Themen-Optionen | |
| Thema bewerten | |
|
|
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Wochentag für beliebiges Datum auslesen? | PHP Tipps 2004 | 3 | 05.08.2004 23:14 | |
| Besucher kamen über folgende Suchanfragen bei Google auf diese Seite |
| formel strtotime, excel wievielter tag gleich wochentag, excel der wievielte tag der woche, wievielte woche im monat? excel, excel formel der wievielte wochentag, welcher tag war der 12.08.2007, excel weekday formel, welcher tag war das 12.8.2007, excel der wievielte tag ist heute?, wievielter montag im monat excel, weekday formel, welcher tag war 12.08.2007, excel wievielte wochentag monat, excel datum in php, excel der wievielte wochentag im monat, welcher wochentag war an diesem datum excel 2007, excel wochentag wievielter, wievielte wochentag excel, excel der wievielte wochentag, excel einstellige tage in zweistellige tage |

Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.