259 public static function FormatDate($strDate, $format=
"DD.MM.YYYY HH:MI:SS", $new_format=
"DD.MM.YYYY HH:MI:SS")
263 $strDate = trim($strDate);
265 $new_format = str_replace(
"MI",
"I", $new_format);
266 $new_format = preg_replace(
"/([DMYIHS])\\1+/isu",
"\\1", $new_format);
267 $arFormat = preg_split(
"/[^0-9a-z]/is", mb_strtoupper($format));
268 $arDate = preg_split(
"/[^0-9]/", $strDate);
269 $arParsedDate=Array();
270 $bound = min(
count($arFormat),
count($arDate));
272 for(
$i=0;
$i<$bound;
$i++)
275 if (preg_match(
"/^[0-9]/", $arDate[
$i]))
276 $r =
$DB->ForSql($arDate[
$i], 4);
278 $r = intval($arDate[
$i]);
280 $arParsedDate[mb_substr($arFormat[
$i], 0, 2)] = $r;
282 if (intval($arParsedDate[
"DD"])<=0 || intval($arParsedDate[
"MM"])<=0 || intval($arParsedDate[
"YY"])<=0)
287 if(intval($arParsedDate[
"YY"])>1970 && intval($arParsedDate[
"YY"])<2038)
290 intval($arParsedDate[
"HH"]),
291 intval($arParsedDate[
"MI"]),
292 intval($arParsedDate[
"SS"]),
293 intval($arParsedDate[
"MM"]),
294 intval($arParsedDate[
"DD"]),
295 intval($arParsedDate[
"YY"])
298 for (
$i=0;
$i < mb_strlen($new_format);
$i++)
300 $simbol = mb_substr($new_format,
$i, 1);
303 case "F":$match=
GetMessage(
"FORUM_MONTH_".date(
"n", $ux_time));
break;
304 case "M":$match=
GetMessage(
"FORUM_MON_".date(
"n", $ux_time));
break;
305 case "l":$match=
GetMessage(
"FORUM_DAY_OF_WEEK_".date(
"w", $ux_time));
break;
306 case "D":$match=
GetMessage(
"FORUM_DOW_".date(
"w", $ux_time));
break;
307 default: $match = date(mb_substr($new_format,
$i, 1), $ux_time);
break;
309 $strResult .= $match;
314 if($arParsedDate[
"MM"]<1 || $arParsedDate[
"MM"]>12)
315 $arParsedDate[
"MM"] = 1;
316 for (
$i=0;
$i < mb_strlen($new_format);
$i++)
318 $simbol = mb_substr($new_format,
$i, 1);
322 $match = str_pad($arParsedDate[
"MM"], 2,
"0", STR_PAD_LEFT);
323 if (intval($arParsedDate[
"MM"]) > 0)
324 $match=
GetMessage(
"FORUM_MONTH_".intval($arParsedDate[
"MM"]));
327 $match = str_pad($arParsedDate[
"MM"], 2,
"0", STR_PAD_LEFT);
328 if (intval($arParsedDate[
"MM"]) > 0)
329 $match=
GetMessage(
"FORUM_MON_".intval($arParsedDate[
"MM"]));
332 $match = str_pad($arParsedDate[
"DD"], 2,
"0", STR_PAD_LEFT);
333 if (intval($arParsedDate[
"DD"]) > 0)
334 $match =
GetMessage(
"FORUM_DAY_OF_WEEK_".intval($arParsedDate[
"DD"]));
337 $match = str_pad($arParsedDate[
"DD"], 2,
"0", STR_PAD_LEFT);
338 if (intval($arParsedDate[
"DD"]) > 0)
339 $match =
GetMessage(
"FORUM_DOW_".intval($arParsedDate[
"DD"]));
341 case "d": $match = str_pad($arParsedDate[
"DD"], 2,
"0", STR_PAD_LEFT);
break;
342 case "m": $match = str_pad($arParsedDate[
"MM"], 2,
"0", STR_PAD_LEFT);
break;
343 case "j": $match = str_pad($arParsedDate[
"DD"], 2,
"0", STR_PAD_LEFT);
break;
344 case "Y": $match = str_pad($arParsedDate[
"YY"], 4,
"0", STR_PAD_LEFT);
break;
346 $match = mb_substr($arParsedDate[
"YY"], 2);
break;
347 case "H": $match = str_pad($arParsedDate[
"HH"], 2,
"0", STR_PAD_LEFT);
break;
348 case "i": $match = str_pad($arParsedDate[
"MI"], 2,
"0", STR_PAD_LEFT);
break;
349 case "S": $match = str_pad($arParsedDate[
"SS"], 2,
"0", STR_PAD_LEFT);
break;
351 $match = intval($arParsedDate[
"HH"]);
356 $match = intval($arParsedDate[
"HH"]);
358 $match = ($match-12).
" PM";
362 if (mb_substr($new_format,
$i, 1) ==
"a")
363 $match = mb_strtolower($match);
366 $match = mb_substr($new_format,
$i, 1);
break;
368 $strResult .= $match;