Yii Framework v1.1.10 绫诲弬鑰

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鏃堕棿鎴炽

涓嬪垪妯″紡瀛楃鍙互琚瘑鍒細
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() 灏嗕竴涓棩鏈熷瓧绗︿覆杞崲涓烘椂闂存埑銆 CDateTimeParser

鍙椾繚鎶ゆ柟娉

闅愯棌缁ф壙鏂规硶

鏂规硶鎻忚堪瀹氫箟鍦
parseAmPm() CDateTimeParser
parseInteger() CDateTimeParser

鏂规硶璇︾粏

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;
}

Copyright © 2008-2011 by Yii Software LLC
All Rights Reserved.