Morilog\Jalali\jDateTime::date PHP Метод

date() публичный статический Метод

public static date ( $format, boolean $stamp = false, boolean $timezone = null ) : mixed
$format
$stamp boolean
$timezone boolean
Результат mixed
    public static function date($format, $stamp = false, $timezone = null)
    {
        $stamp = $stamp !== false ? $stamp : time();
        $dateTime = static::createDateTime($stamp, $timezone);
        //Find what to replace
        $chars = preg_match_all('/([a-zA-Z]{1})/', $format, $chars) ? $chars[0] : array();
        //Intact Keys
        $intact = array('B', 'h', 'H', 'g', 'G', 'i', 's', 'I', 'U', 'u', 'Z', 'O', 'P');
        $intact = self::filterArray($chars, $intact);
        $intactValues = array();
        foreach ($intact as $k => $v) {
            $intactValues[$k] = $dateTime->format($v);
        }
        //End Intact Keys
        //Changed Keys
        list($year, $month, $day) = array($dateTime->format('Y'), $dateTime->format('n'), $dateTime->format('j'));
        list($jYear, $jMonth, $jDay) = self::toJalali($year, $month, $day);
        $keys = array('d', 'D', 'j', 'l', 'N', 'S', 'w', 'z', 'W', 'F', 'm', 'M', 'n', 't', 'L', 'o', 'Y', 'y', 'a', 'A', 'c', 'r', 'e', 'T');
        $keys = self::filterArray($chars, $keys, array('z'));
        $values = array();
        foreach ($keys as $k => $key) {
            $v = '';
            switch ($key) {
                //Day
                case 'd':
                    $v = sprintf("%02d", $jDay);
                    break;
                case 'D':
                    $v = self::getDayNames($dateTime->format('D'), true);
                    break;
                case 'j':
                    $v = $jDay;
                    break;
                case 'l':
                    $v = self::getDayNames($dateTime->format('l'));
                    break;
                case 'N':
                    $v = self::getDayNames($dateTime->format('l'), false, 1, true);
                    break;
                case 'S':
                    $v = 'ام';
                    break;
                case 'w':
                    $v = self::getDayNames($dateTime->format('l'), false, 1, true) - 1;
                    break;
                case 'z':
                    if ($jMonth > 6) {
                        $v = 186 + ($jMonth - 6 - 1) * 30 + $jDay;
                    } else {
                        $v = ($jMonth - 1) * 31 + $jDay;
                    }
                    self::$temp['z'] = $v;
                    break;
                    //Week
                //Week
                case 'W':
                    $v = is_int(self::$temp['z'] / 7) ? self::$temp['z'] / 7 : intval(self::$temp['z'] / 7 + 1);
                    break;
                    //Month
                //Month
                case 'F':
                    $v = self::getMonthNames($jMonth);
                    break;
                case 'm':
                    $v = sprintf("%02d", $jMonth);
                    break;
                case 'M':
                    $v = self::getMonthNames($jMonth, true);
                    break;
                case 'n':
                    $v = $jMonth;
                    break;
                case 't':
                    $v = $jMonth == 12 ? 29 : ($jMonth > 6 && $jMonth != 12 ? 30 : 31);
                    break;
                    //Year
                //Year
                case 'L':
                    $tmpObj = static::createDateTime(time() - 31536000, $timezone);
                    $v = $tmpObj->format('L');
                    break;
                case 'o':
                case 'Y':
                    $v = $jYear;
                    break;
                case 'y':
                    $v = $jYear % 100;
                    break;
                    //Time
                //Time
                case 'a':
                    $v = $dateTime->format('a') == 'am' ? 'ق.ظ' : 'ب.ظ';
                    break;
                case 'A':
                    $v = $dateTime->format('A') == 'AM' ? 'قبل از ظهر' : 'بعد از ظهر';
                    break;
                    //Full Dates
                //Full Dates
                case 'c':
                    $v = $jYear . '-' . sprintf("%02d", $jMonth) . '-' . sprintf("%02d", $jDay) . 'T';
                    $v .= $dateTime->format('H') . ':' . $dateTime->format('i') . ':' . $dateTime->format('s') . $dateTime->format('P');
                    break;
                case 'r':
                    $v = self::getDayNames($dateTime->format('D'), true) . ', ' . sprintf("%02d", $jDay) . ' ' . self::getMonthNames($jMonth, true);
                    $v .= ' ' . $jYear . ' ' . $dateTime->format('H') . ':' . $dateTime->format('i') . ':' . $dateTime->format('s') . ' ' . $dateTime->format('P');
                    break;
                    //Timezone
                //Timezone
                case 'e':
                    $v = $dateTime->format('e');
                    break;
                case 'T':
                    $v = $dateTime->format('T');
                    break;
            }
            $values[$k] = $v;
        }
        //End Changed Keys
        //Merge
        $keys = array_merge($intact, $keys);
        $values = array_merge($intactValues, $values);
        return strtr($format, array_combine($keys, $values));
    }