raven16
Lieutenant
- Registriert
- Nov. 2008
- Beiträge
- 580
Hallo,
ich bekomme folgende Ausgabe und weiß leider nicht genau, wodurch der Notice verursacht wird:
Mein Quelltext:
Die Funktion gibt zumindest genau das geforderte Ergebnis im Format yyyy-mm-dd aus, was schon mal schön ist.
Ich hoffe ihr habt einen wertvollen Tipp für mich
Generelle Verbesserungen zum Quellcode nehme ich auch gerne entgegen
Gruß
ich bekomme folgende Ausgabe und weiß leider nicht genau, wodurch der Notice verursacht wird:
Array ( [0] => 2013-09-01 [1] => 2015-11-01 )
Notice: Array to string conversion in D:\...\index.php on line 78
Array
Mein Quelltext:
PHP:
<?php
/**
* Funktion, die einen Monatszeitraum von
* einem enddate berechnet, z.B. wird aus
* 31. Oktober 2015 der Zeitraum im Format
* 2015-10-01 bis 2015-09-01.
*
* ## Param
* $enddate = timestamp
* $months = Integer
* ## Return
* Array[0] = Startdatum
* Array[1] = Enddatum
*/
function sp_timescale($timestamp, $months){
if(!is_int($timestamp) || !is_int($months))
return false;
$tmp_date = date("Y-m-d", $timestamp);
if(preg_match("#^(\d{4})-(\d{2})-(\d{2})$#", $tmp_date) != 1)
return false;
// Enddatum generieren
$tmp_date = explode("-", $tmp_date);
$yyyy = $tmp_date[0];
$mm = $tmp_date[1];
$dd = "01";
$bis = $yyyy.'-'.$mm.'-'.$dd;
// Startdatum generieren
if(floor($months / 12) > 0){
$yyyy = $yyyy - floor($months / 12); // yyyy div 12 (Teiler ohne Rest von Jahr abziehen)
$mm_mod = $months % 12; // yyyy mod 12 (Rest muss noch abgezogen werden)
}
if(isset($mm_mod))
$mm_von = $mm - $mm_mod;
else
$mm_von = $mm - $months;
// Prüfen, ob Jahresschwelle unterschritten wird
if($mm_von <= 0){
$yyyy--;
$mm = 12 - abs($mm_von);
}
else $mm = $mm_von;
if($yyyy < 10){
settype($yyyy, 'String');
$yyyy = '0'.$yyyy;
}
if($mm < 10){
settype($mm, 'String');
$mm = '0'.$mm;
}
$von = $yyyy.'-'.$mm.'-'.$dd;
$arr_date = array($von, $bis);
print_r($arr_date);
return $arr_date;
}
?>
<!DOCTYPE html>
<html lang="de">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<title>test</title>
</head>
<body>
<?php
$time = time();
echo sp_timescale($time,26);
?>
</body>
</html>
Die Funktion gibt zumindest genau das geforderte Ergebnis im Format yyyy-mm-dd aus, was schon mal schön ist.
Ich hoffe ihr habt einen wertvollen Tipp für mich
Generelle Verbesserungen zum Quellcode nehme ich auch gerne entgegen
Gruß