예제 #1
0
function CCParseDate($ParsingDate, $FormatMask)
{
    global $CCSLocales;
    if (is_array($FormatMask) && strlen($ParsingDate)) {
        $DateArray = array(0, "1", "", "1", "", "", "", "", "", "", "", "", "", "");
        $RegExp = CCGetDateRegExp($FormatMask);
        $IsValid = preg_match($RegExp[0], $ParsingDate, $matches);
        for ($i = 1; $i < sizeof($matches); $i++) {
            $DateArray[$RegExp[$i]] = $matches[$i];
        }
        if (!$DateArray[ccsMonth] && ($DateArray[ccsFullMonth] || $DateArray[ccsShortMonth])) {
            if ($DateArray[ccsFullMonth]) {
                $DateArray[ccsMonth] = CCGetIndex($CCSLocales->GetFormatInfo("MonthNames"), $DateArray[ccsFullMonth], true) + 1;
            } else {
                if ($DateArray[ccsShortMonth]) {
                    $DateArray[ccsMonth] = CCGetIndex($CCSLocales->GetFormatInfo("MonthShortNames"), $DateArray[ccsShortMonth], true) + 1;
                }
            }
        } else {
            $DateArray[ccsMonth] = intval($DateArray[ccsMonth]);
        }
        if (!$DateArray[ccsMonth]) {
            $DateArray[ccsMonth] = 1;
        }
        if (intval($DateArray[ccsDay]) == 0) {
            $DateArray[ccsDay] = 1;
        } else {
            $DateArray[ccsDay] = intval($DateArray[ccsDay]);
        }
        if ($DateArray[ccsAmPm]) {
            if (strtoupper(substr($DateArray[ccsAmPm], 0, 1)) == "A" || $DateArray[ccsAmPm] == $CCSLocales->GetFormatInfo("AMDesignator")) {
                $DateArray[ccsHour] = $DateArray[ccsHour] == 12 ? 0 : $DateArray[ccsHour];
            } elseif ($DateArray[ccsHour] < 12) {
                $DateArray[ccsHour] += 12;
            }
        }
        if (strlen($DateArray[ccsYear]) == 2) {
            if ($DateArray[ccsYear] < 70) {
                $DateArray[ccsYear] = "20" . $DateArray[ccsYear];
            } else {
                $DateArray[ccsYear] = "19" . $DateArray[ccsYear];
            }
        }
        if ($DateArray[ccsYear] < 1971 && $DateArray[ccsYear] > 0) {
            $DateArray[ccsAppropriateYear] = $DateArray[ccsYear] + intval((2000 - $DateArray[ccsYear]) / 28) * 28;
        } else {
            if ($DateArray[ccsYear] > 2030) {
                $DateArray[ccsAppropriateYear] = $DateArray[ccsYear] - intval(($DateArray[ccsYear] - 2000) / 28) * 28;
            } else {
                $DateArray[ccsAppropriateYear] = $DateArray[ccsYear];
            }
        }
        $DateArray[ccsHour] = intval($DateArray[ccsHour]);
        $DateArray[ccsMinute] = intval($DateArray[ccsMinute]);
        $DateArray[ccsSecond] = intval($DateArray[ccsSecond]);
        $DateArray[ccsTimestamp] = @mktime($DateArray[ccsHour], $DateArray[ccsMinute], $DateArray[ccsSecond], $DateArray[ccsMonth], $DateArray[ccsDay], $DateArray[ccsAppropriateYear]);
        if (!CCValidateDate($DateArray)) {
            $ParsingDate = "";
        } else {
            $ParsingDate = $DateArray;
        }
    }
    return $ParsingDate;
}
예제 #2
0
파일: Common.php 프로젝트: 4v4t4r/CTF-LCC
function CCParseDate($ParsingDate, $FormatMask)
{
    global $ShortMonths;
    global $Months;
    if (is_array($FormatMask) && strlen($ParsingDate)) {
        $DateArray = array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
        $RegExp = CCGetDateRegExp($FormatMask);
        $IsValid = preg_match($RegExp[0], $ParsingDate, $matches);
        for ($i = 1; $i < sizeof($matches); $i++) {
            $DateArray[$RegExp[$i]] = $matches[$i];
        }
        if ($DateArray[ccsMonth] == 0 && ($DateArray[ccsFullMonth] != 0 || $DateArray[ccsShortMonth] != 0)) {
            if ($DateArray[ccsFullMonth] != 0) {
                $DateArray[ccsMonth] = CCGetIndex($Months, $DateArray[ccsFullMonth], true) + 1;
            } else {
                if ($DateArray[ccsShortMonth] != 0) {
                    $DateArray[ccsMonth] = CCGetIndex($ShortMonths, $DateArray[ccsShortMonth], true) + 1;
                }
            }
        }
        if ($DateArray[ccsHour] < 12 && strtoupper($DateArray[ccsAmPm][0]) == "P") {
            $DateArray[ccsHour] += 12;
        }
        if ($DateArray[ccsHour] == 12 && strtoupper($DateArray[ccsAmPm][0]) == "A") {
            $DateArray[ccsHour] = 0;
        }
        if (strlen($DateArray[ccsYear]) == 2) {
            if ($DateArray[ccsYear] < 70) {
                $DateArray[ccsYear] = "20" . $DateArray[ccsYear];
            } else {
                $DateArray[ccsYear] = "19" . $DateArray[ccsYear];
            }
        }
        if ($DateArray[ccsYear] < 1971 && $DateArray[ccsYear] > 0) {
            $DateArray[ccsAppropriateYear] = $DateArray[ccsYear] + intval((2000 - $DateArray[ccsYear]) / 28) * 28;
        } else {
            if ($DateArray[ccsYear] > 2030) {
                $DateArray[ccsAppropriateYear] = $DateArray[ccsYear] - intval(($DateArray[ccsYear] - 2000) / 28) * 28;
            }
        }
        //$ParsingDate = mktime ($DateArray[ccsHour], $DateArray[ccsMinute], $DateArray[ccsSecond], $DateArray[ccsMonth], $DateArray[ccsDay], $DateArray[ccsAppropriateYear]);
        $DateArray[ccsTimestamp] = mktime($DateArray[ccsHour], $DateArray[ccsMinute], $DateArray[ccsSecond], $DateArray[ccsMonth], $DateArray[ccsDay], $DateArray[ccsAppropriateYear]);
        if ($DateArray[ccsTimestamp] < 0) {
            $ParsingDate = "";
        } else {
            $ParsingDate = $DateArray;
        }
    }
    return $ParsingDate;
}