Форум → Программирование → PHP для идиотов → парсер даты
парсер даты
-
Друзья, посмотрите на код и скажите, что вы думаете…
Задача
Нужно отпарсить дату, выполнить какие-то операции с годом, месяцем, днем и вернуть дату с временем или без,
если вместо даты подставляется что-то кроме даты, например строка с текстом, то нужно вывести эту строку
CODE
<?php
$date = "2007-8-7 10:33";
//$date = "Never";
class jdn_persian {
function gregorian_to_jalali($y, $m, $d) {
$date = array($y-1, $m-1, $d-1);
return $date;
}
};
function parse_date($date) {
if (strtotime($date)) {
$dt = explode(" ", $date);
$d = explode("-", $dt[0]);
$obj = new jdn_persian;
$adt = array("date" => $obj->gregorian_to_jalali($d[0], $d[1], $d[2]), "time" => $dt[1]);
for ($i=1; $i<=2; $i++) {
if ($adt['date'][$i] <= 9) {
$adt['date'][$i] = "0".$adt['date'][$i];
}
}
return $adt;
} else {
return $date;
}
}
function show_date($date) {
if (is_array($date = parse_date($date))) {
return implode("-", $date['date'])." ".$date['time'];
} else {
return $date;
}
}
echo show_date($date);
?>
Спасибо, жду комментарии… -
17 августа 2007 г. 0:51, спустя 1 час 5 минут 10 секунд
class myDate{
const DATE_PATT = '/^\d{4}-\d{1,2}-\d{1,2}( \d{1,2}:\d{1,2})?$/';
const fmtDatA = 'm-d-Y';
const fmtDatE = 'd-m-Y';
//………продолжаем наскока надо
function __construct($str){
$this->text = trim($str);
this->defDate();
}
public function showDate($format){
if (!this->isDate){
return htmlspesialchars($this->text);
} else {
return date($format, $this->date);
}
}
private function defDate(){
if (preg_match(self::DATE_PATT, $this->text)!=1) return;
$this->isDate = true;
$ar1 = explode(' ', $this->text);
$arD = explode('-', $ar1[0]);
if (count($ar1)==1) {
$arT= array(0,0);
} else {
$arT = explode(':', $ar1[1]);
}
$this->date = mktime($arT[0], $arT[1], 0, $arD[1], $arD[0], $arD[2]);
}
private $date;
private $text = '';
private $isDate=false;
} -
17 августа 2007 г. 3:27, спустя 2 часа 35 минут 34 секунды
ща vasa_c придет, ругаццо будет - скажет что все стат классом надо было делать - и нефиг плодить объекты :)
это кстати основа - выдается либо текст, либо дата - видоизменить и доработать до разбора строки с датой в нужном формате и с лбюыми действиями над датой, впрочем, не сложно -
17 августа 2007 г. 8:50, спустя 5 часов 23 минуты 16 секунд
Спасибо огроМНОЕ.
Но с mktime тут не получится в одном случае.
Дата в бд хранитса в грегориане, а выводится в шамси(Иран), потом когда обратно ложитса в бд конвертитса из шамси в грегориан.
Тут прийдетса строку формить и присваивать закрытому свойству dаte.
П.С. 2007 в шамси это 1386<1970 -
17 августа 2007 г. 10:04, спустя 1 час 14 минут 4 секунды
ща vasa_c придет, ругаццо будет
он отъехал, можно дебоширить =)все умрут, а я изумруд -
-
17 августа 2007 г. 12:42, спустя 11 минут 30 секунд
он отъехал, можно дебоширить =)
дык дня через 4 вернется то..
Пожалуйста, авторизуйтесь, чтобы написать комментарий!