コード例 #1
0
ファイル: JalaliFormatter.php プロジェクト: saeedazizi/farsi
 /**
  * @param JalaliDate $date
  * @param string $format
  * @param bool $farsiDigits whether to convert english digits to farsi
  * @return string
  */
 public static function JalaliToString(JalaliDate $date, $format, $farsiDigits = true)
 {
     $output = '';
     $functions = str_split($format);
     $escaped = false;
     foreach ($functions as $function) {
         if ($escaped) {
             $output .= $function;
             $escaped = false;
         } else {
             if ($function === '\\') {
                 $escaped = true;
             } else {
                 if (array_key_exists($function, static::$conversionFunctions)) {
                     $f = static::$conversionFunctions[$function];
                     $output .= static::$f($date);
                 } else {
                     $output .= $function;
                 }
             }
         }
     }
     if ($farsiDigits) {
         $output = StringCleaner::digitsToFarsi($output);
     }
     return $output;
 }
コード例 #2
0
ファイル: JalaliParser.php プロジェクト: opilo/farsi
 /**
  * @param string $format
  * @param string $date
  * @param bool   $includeTime
  *
  * @return JalaliDate|JDateTime
  *
  * @throw InvalidDateException
  */
 public static function createJalaliFromFormat($format, $date, $includeTime = false)
 {
     $dateParts = new DateParts();
     $regexp = '';
     $matchCount = 0;
     $escaped = false;
     $functions = str_split($format);
     foreach ($functions as $function) {
         if ($escaped) {
             $regexp .= preg_quote($function, '/');
             $escaped = false;
         } elseif ($function === '\\') {
             $escaped = true;
         } elseif ($function === '.') {
             $regexp .= '.';
         } elseif ($function === '*') {
             $regexp .= '.*';
         } elseif (array_key_exists($function, static::$conversionFunctions)) {
             $f = static::$conversionFunctions[$function];
             $regexp .= '(' . static::$f($dateParts, $matchCount) . ')';
         } elseif ($includeTime && array_key_exists($function, static::$timeConversionFunctions)) {
             $f = static::$timeConversionFunctions[$function];
             $regexp .= '(' . static::$f($dateParts, $matchCount) . ')';
         } else {
             $regexp .= preg_quote($function, '/');
         }
     }
     if ($dateParts->isAmbiguous()) {
         throw new InvalidDateException($date);
     }
     $regexp = "/^{$regexp}\$/";
     $date = StringCleaner::digitsToEnglish($date);
     if (!preg_match($regexp, $date, $matches)) {
         throw new InvalidDateException($date);
     }
     $dateParts->fillWithMatches($matches);
     return $dateParts->createJalaliDate($includeTime);
 }