[PHP] Invoicedate für Abfrage nutzen

Hallo alle miteinander,

ich habe folgende Frage:

Ich hab in einem PDF Template ein Script geschrieben, welches vom aktuellen Datum den letzten Monat ausgibt (z.B. strtotime -1 month). Nun möchte ich aber nicht das aktuelle Datum dafür nehmen, sondern das Rechnungsdatum (invoicedate_created).

Wie kann ich das am besten realisieren ?

Mein Script bisher:

`function formatDateString($stamp) {
// Array Monate
$rmonate = array(
1=>“Januar”,
2=>“Februar”,
3=>“März”,
4=>“April”,
5=>“Mai”,
6=>“Juni”,
7=>“Juli”,
8=>“August”,
9=>“September”,
10=>“Oktober”,
11=>“November”,
12=>“Dezember”);

        $month = date("n", strtotime("first day of last month"));

//Getting the Days set up…
$tage = array(“Sonntag”,“Montag”,“Dienstag”,“Mittwoch”,
“Donnerstag”,“Freitag”,“Samstag”);

$printmem = $rmonate[$month];

return $printmem;
}

if ($invoice->invoice_status_id == 3) {// prüfe ob status viewed ist{
print formatDateString(date(time())); // Status ist auf vorheriger Monat
} else {
function formatCurrentDateString($stamp) { // status ist nicht auf vorheriger Monat
$monate = array(
1=>“Januar”,
2=>“Februar”,
3=>“März”,
4=>“April”,
5=>“Mai”,
6=>“Juni”,
7=>“Juli”,
8=>“August”,
9=>“September”,
10=>“Oktober”,
11=>“November”,
12=>“Dezember”);

                $monat = date("n");

                $tage = array("Sonntag","Montag","Dienstag","Mittwoch",
                    "Donnerstag","Freitag","Samstag");

$printme = $monate[$monat];

return $printme;
} 
print formatCurrentDateString(date(time()));

}

PS: Sorry wegen der Codeformatierung, irgendwie klappt das nicht so wie ich das will.

Habe das nicht getested sollte aber so funktionieren:

<?php
	$eTlM = date_create($invoice->invoice_date_created);
	date_modify($eTlM, '-1 month');
	date_modify($eTlM, 'first day of this month');
	echo date_format($eTlM, 'Y.m.d');
?>

In der Variable $eTlM (ersterTagletztenMonats) sollte dann der erste Tag des letzten Monats (ausgehend vom Rechnungsdatum) gespeichert sein.

Hoffe das klappt. Habe es nur kurz überflogen. Aber müsste klappen. In der letzten Zeile (date_format) kannst du das von dir gewünschte Format der Ausgabe wählen.

Was du mit den ganzen Arrays (Monate & Tage) machen willst versteh ich nicht, das bringt PHP ja selbst mit.

Versuchen kannst du es so, die Tage/Monate als Text auszugeben:

<?php
	setlocale(LC_ALL, 'de_DE');
	$eTlM = date_create($invoice->invoice_date_created);
	date_modify($eTlM, '-1 month');
	date_modify($eTlM, 'first day of this month');
	$local_date = date('l, d.m.Y', $eTlM->getTimestamp());
	$de_date = strftime('%A %e, %b.%Y', strtotime($local_date));
	echo $de_date;
?>

Zusammen würde es dann so aussehen:

<?php
	$eTlM = date_create($invoice->invoice_date_created);
	date_modify($eTlM, '-1 month');
	date_modify($eTlM, 'first day of this month');
	echo "Datum als Zahlenausgabe: ".date_format($eTlM, 'Y.m.d')."<br>";

	setlocale(LC_ALL, 'de_DE');
	$local_date = date('l, d.m.Y', $eTlM->getTimestamp());
	$de_date = strftime('%A %e, %b.%Y', strtotime($local_date));
	echo "Datum als Textausgabe: ".$de_date;
?>

Welche Version (Darstellung) du möchtest musst du selbst entscheiden.

Hoffe ich kann dir damit helfen.

Hey, vielen Dank für die ausführliche Hilfestellung. Genau das habe ich gesucht ! Vielen Dank !!

Habe das in eine Abfrage gepackt um Status zu prüfen (Frag nicht warum aber mein Kunde möchte es so). Im Prinzip geht es dabei nur um einen Satz wo es stehen soll.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.