CDateTimeParser
鍖 | system.utils |
---|---|
缁ф壙 | class CDateTimeParser |
婧愯嚜 | 1.0 |
鐗堟湰 | $Id: CDateTimeParser.php 2928 2011-02-01 17:41:51Z alexander.makarow $ |
婧愮爜 | framework/utils/CDateTimeParser.php |
CDateTimeParser鎸夌収缁欏畾鐨勬ā寮忥紝灏嗕竴涓棩鏈/鏃堕棿瀛楃涓茶浆鎹负涓涓猆NIX鏃堕棿鎴炽
涓嬪垪妯″紡瀛楃鍙互琚瘑鍒細
渚嬪锛岃瑙f瀽鏃ユ湡瀛楃涓测21/10/2008鈥濓紝鍙互浣跨敤濡備笅鏍煎紡锛
瑕佹牸寮忓寲涓涓椂闂存埑涓烘棩鏈熷瓧绗︿覆锛岃浣跨敤CDateFormatter銆
涓嬪垪妯″紡瀛楃鍙互琚瘑鍒細
Pattern | Description ---------------------------------------------------- d | 1鑷31鐨勬瘡鏈堢殑澶╂暟锛屾病鏈夊墠瀵奸浂 dd | 1鑷31鐨勬瘡鏈堢殑澶╂暟锛屾湁鍓嶅闆 M | 1鑷12鐨勬湀浠芥暟锛屾病鏈夊墠瀵奸浂 MM | 1鑷12鐨勬湀浠芥暟锛屾湁鍓嶅闆 yy | 2浣嶇殑骞翠唤鏁帮紝渚嬪锛96,05 yyyy | 4浣嶇殑骞翠唤鏁帮紝渚嬪锛2005 h | 0鑷23鐨勫皬鏃舵暟锛屾病鏈夊墠瀵奸浂 hh | 0鑷23鐨勫皬鏃舵暟锛屾湁鍓嶅闆 H | 0鑷23鐨勫皬鏃舵暟锛屾病鏈夊墠瀵奸浂 HH | 0鑷23鐨勫皬鏃舵暟锛屾湁鍓嶅闆 m | 0鑷59鐨勫垎閽熸暟锛屾病鏈夊墠瀵奸浂 mm | 0鑷59鐨勫垎閽熸暟锛屾湁鍓嶅闆 s | 0鑷59鐨勭鏁帮紝娌℃湁鍓嶅闆 ss | 0鑷59鐨勭鏁帮紝鏈夊墠瀵奸浂 a | AM 鎴 PM 锛堜笂鍗堟垨涓嬪崍锛夛紙浠1.1.5鐗堝彲鐢級 ----------------------------------------------------鍏朵綑鐨勬墍鏈夊瓧绗﹀繀椤诲嚭鐜板湪鏃ユ湡瀛楃涓茬殑瀵瑰簲浣嶇疆涓娿
渚嬪锛岃瑙f瀽鏃ユ湡瀛楃涓测21/10/2008鈥濓紝鍙互浣跨敤濡備笅鏍煎紡锛
$timestamp=CDateTimeParser::parse('21/10/2008','dd/MM/yyyy');
瑕佹牸寮忓寲涓涓椂闂存埑涓烘棩鏈熷瓧绗︿覆锛岃浣跨敤CDateFormatter銆
鏂规硶璇︾粏
parse()
鏂规硶
public static integer parse(string $value, string $pattern='MM/dd/yyyy', array $defaults=array (
))
| ||
$value | string | 闇瑕佽В鏋愮殑鏃ユ湡瀛楃涓 |
$pattern | string | 鏃ユ湡瀛楃涓查伒寰殑妯″紡 |
$defaults | array | 骞淬佹湀銆佹棩銆佸皬鏃躲佸垎閽熴佺鐨勯粯璁ゅ 杩欎簺榛樿鍊煎皢鍦ㄦā寮忔湭鏄庣‘鎸囧畾鐩稿簲鐨勫瓧娈垫椂琚娇鐢ㄣ 渚嬪锛屽鏋滄ā寮忎负鈥淢M/dd/yyyy鈥濓紝鑰岀粰瀹氱殑鍙傛暟涓 array('minute'=>0, 'second'=>0)锛岄偅涔堝疄闄呰В鏋愬嚭鐨勭粨鏋滅殑鍒 閽熸暟鍜岀鏁扮殑鍊煎皢涓0锛岃屽皬鏃舵暟鍒欎负浣跨敤 date('H') 鍑芥暟寰楀埌鐨 褰撴椂鏃堕挓鐨勫笺傛鍙傛暟浠1.1.5鐗堝紑濮嬪彲鐢ㄣ |
{return} | integer | 鏃ユ湡瀛楃涓茬殑鏃堕棿鎴炽傚鏋滆В鏋愬け璐ュ垯杩斿洖false銆 |
婧愮爜锛 framework/utils/CDateTimeParser.php#66 (鏄剧ず)
public static function parse($value,$pattern='MM/dd/yyyy',$defaults=array())
{
$tokens=self::tokenize($pattern);
$i=0;
$n=strlen($value);
foreach($tokens as $token)
{
switch($token)
{
case 'yyyy':
{
if(($year=self::parseInteger($value,$i,4,4))===false)
return false;
$i+=4;
break;
}
case 'yy':
{
if(($year=self::parseInteger($value,$i,1,2))===false)
return false;
$i+=strlen($year);
break;
}
case 'MM':
{
if(($month=self::parseInteger($value,$i,2,2))===false)
return false;
$i+=2;
break;
}
case 'M':
{
if(($month=self::parseInteger($value,$i,1,2))===false)
return false;
$i+=strlen($month);
break;
}
case 'dd':
{
if(($day=self::parseInteger($value,$i,2,2))===false)
return false;
$i+=2;
break;
}
case 'd':
{
if(($day=self::parseInteger($value,$i,1,2))===false)
return false;
$i+=strlen($day);
break;
}
case 'h':
case 'H':
{
if(($hour=self::parseInteger($value,$i,1,2))===false)
return false;
$i+=strlen($hour);
break;
}
case 'hh':
case 'HH':
{
if(($hour=self::parseInteger($value,$i,2,2))===false)
return false;
$i+=2;
break;
}
case 'm':
{
if(($minute=self::parseInteger($value,$i,1,2))===false)
return false;
$i+=strlen($minute);
break;
}
case 'mm':
{
if(($minute=self::parseInteger($value,$i,2,2))===false)
return false;
$i+=2;
break;
}
case 's':
{
if(($second=self::parseInteger($value,$i,1,2))===false)
return false;
$i+=strlen($second);
break;
}
case 'ss':
{
if(($second=self::parseInteger($value,$i,2,2))===false)
return false;
$i+=2;
break;
}
case 'a':
{
if(($ampm=self::parseAmPm($value,$i))===false)
return false;
if(isset($hour))
{
if($hour==12 && $ampm==='am')
$hour=0;
else if($hour<12 && $ampm==='pm')
$hour+=12;
}
$i+=2;
break;
}
default:
{
$tn=strlen($token);
if($i>=$n || substr($value,$i,$tn)!==$token)
return false;
$i+=$tn;
break;
}
}
}
if($i<$n)
return false;
if(!isset($year))
$year=isset($defaults['year']) ? $defaults['year'] : date('Y');
if(!isset($month))
$month=isset($defaults['month']) ? $defaults['month'] : date('n');
if(!isset($day))
$day=isset($defaults['day']) ? $defaults['day'] : date('j');
if(strlen($year)===2)
{
if($year>=70)
$year+=1900;
else
$year+=2000;
}
$year=(int)$year;
$month=(int)$month;
$day=(int)$day;
if(
!isset($hour) && !isset($minute) && !isset($second)
&& !isset($defaults['hour']) && !isset($defaults['minute']) && !isset($defaults['second'])
)
$hour=$minute=$second=0;
else
{
if(!isset($hour))
$hour=isset($defaults['hour']) ? $defaults['hour'] : date('H');
if(!isset($minute))
$minute=isset($defaults['minute']) ? $defaults['minute'] : date('i');
if(!isset($second))
$second=isset($defaults['second']) ? $defaults['second'] : date('s');
$hour=(int)$hour;
$minute=(int)$minute;
$second=(int)$second;
}
if(CTimestamp::isValidDate($year,$month,$day) && CTimestamp::isValidTime($hour,$minute,$second))
return CTimestamp::getTimestamp($hour,$minute,$second,$month,$day,$year);
else
return false;
}
灏嗕竴涓棩鏈熷瓧绗︿覆杞崲涓烘椂闂存埑銆
parseAmPm()
鏂规硶
protected static void parseAmPm($value, $offset)
| ||
$value | ||
$offset |
婧愮爜锛 framework/utils/CDateTimeParser.php#272 (鏄剧ず)
protected static function parseAmPm($value, $offset)
{
$v=strtolower(substr($value,$offset,2));
return $v==='am' || $v==='pm' ? $v : false;
}
parseInteger()
鏂规硶
protected static void parseInteger($value, $offset, $minLength, $maxLength)
| ||
$value | ||
$offset | ||
$minLength | ||
$maxLength |
婧愮爜锛 framework/utils/CDateTimeParser.php#257 (鏄剧ず)
protected static function parseInteger($value,$offset,$minLength,$maxLength)
{
for($len=$maxLength;$len>=$minLength;--$len)
{
$v=substr($value,$offset,$len);
if(ctype_digit($v) && strlen($v)>=$minLength)
return $v;
}
return false;
}