コード例 #1
0
        private bool ParseZone(int start)
        {
            if (start < this._end)
            {
                char ch = this._text[start];
                switch (ch)
                {
                case 'Z':
                case 'z':
                    this.Zone = ParserTimeZone.Utc;
                    ++start;
                    break;

                default:
                    if (start + 2 < this._end && this.Parse2Digit(start + DateTimeParser.Lz_, out this.ZoneHour) &&
                        this.ZoneHour <= 99)
                    {
                        switch (ch)
                        {
                        case '+':
                            this.Zone = ParserTimeZone.LocalEastOfUtc;
                            start    += DateTimeParser.Lz_zz;
                            break;

                        case '-':
                            this.Zone = ParserTimeZone.LocalWestOfUtc;
                            start    += DateTimeParser.Lz_zz;
                            break;
                        }
                    }

                    if (start < this._end)
                    {
                        if (this.ParseChar(start, ':'))
                        {
                            ++start;
                            if (start + 1 < this._end && this.Parse2Digit(start, out this.ZoneMinute) && this.ZoneMinute <= 99)
                            {
                                start += 2;
                                break;
                            }

                            break;
                        }

                        if (start + 1 < this._end && this.Parse2Digit(start, out this.ZoneMinute) && this.ZoneMinute <= 99)
                        {
                            start += 2;
                            break;
                        }

                        break;
                    }

                    break;
                }
            }

            return(start == this._end);
        }
コード例 #2
0
        private bool ParseZone(int start)
        {
            if (start < _length)
            {
                char ch = _text[start];
                if (ch == 'Z' || ch == 'z')
                {
                    Zone = ParserTimeZone.Utc;
                    start++;
                }
                else
                {
                    if (start + 5 < _length && Parse2Digit(start + Lz_, out ZoneHour) && ZoneHour <= 99 && ParseChar(start + Lz_zz, ':') && Parse2Digit(start + Lz_zz_, out ZoneMinute) && ZoneMinute <= 99)
                    {
                        switch (ch)
                        {
                        case '-':
                            Zone   = ParserTimeZone.LocalWestOfUtc;
                            start += Lz_zz_zz;
                            break;

                        case '+':
                            Zone   = ParserTimeZone.LocalEastOfUtc;
                            start += Lz_zz_zz;
                            break;
                        }
                    }
                }
            }

            return(start == _length);
        }
コード例 #3
0
        private bool ParseZone(int start)
        {
            if (start < _end)
            {
                char ch = _text[start];
                if (ch == 'Z' || ch == 'z')
                {
                    Zone = ParserTimeZone.Utc;
                    start++;
                }
                else
                {
                    if (start + 2 < _end &&
                        Parse2Digit(start + Lz, out ZoneHour) &&
                        ZoneHour <= 99)
                    {
                        switch (ch)
                        {
                        case '-':
                            Zone   = ParserTimeZone.LocalWestOfUtc;
                            start += LzZz;
                            break;

                        case '+':
                            Zone   = ParserTimeZone.LocalEastOfUtc;
                            start += LzZz;
                            break;
                        }
                    }

                    if (start < _end)
                    {
                        if (ParseChar(start, ':'))
                        {
                            start += 1;

                            if (start + 1 < _end &&
                                Parse2Digit(start, out ZoneMinute) &&
                                ZoneMinute <= 99)
                            {
                                start += 2;
                            }
                        }
                        else
                        {
                            if (start + 1 < _end &&
                                Parse2Digit(start, out ZoneMinute) &&
                                ZoneMinute <= 99)
                            {
                                start += 2;
                            }
                        }
                    }
                }
            }

            return(start == _end);
        }
コード例 #4
0
        private bool ParseZone(int start)
        {
            if (start < _length)
            {
                char ch = _text[start];
                if (ch == 'Z' || ch == 'z')
                {
                    Zone = ParserTimeZone.Utc;
                    start++;
                }
                else
                {
                    switch (ch)
                    {
                    case '-':
                        Zone = ParserTimeZone.LocalWestOfUtc;
                        break;

                    case '+':
                        Zone = ParserTimeZone.LocalEastOfUtc;
                        break;

                    default:
                        return(false);
                    }

                    start++;
                    if (!Parse2Digit(start, out ZoneHour))
                    {
                        return(false);
                    }

                    start += 2;

                    if (_text.Length == start)
                    {
                        return(true);
                    }

                    ch = _text[start];

                    if (ch == ':')
                    {
                        start++;
                    }

                    if (!Parse2Digit(start, out ZoneMinute))
                    {
                        return(false);
                    }

                    start += 2;
                }
            }

            return(start == _length);
        }
コード例 #5
0
ファイル: DateTimeParser.cs プロジェクト: yunxuan0123/Piggy2
        private bool ParseZone(int start)
        {
            if (start < this._end)
            {
                char chr = this._text[start];
                if (chr != 'Z')
                {
                    if (chr == 'z')
                    {
                        goto Label2;
                    }
                    if (start + 2 < this._end && this.method_1(start + DateTimeParser.Lz_, out this.ZoneHour) && this.ZoneHour <= 99)
                    {
                        if (chr == '+')
                        {
                            this.Zone = ParserTimeZone.LocalEastOfUtc;
                            start    += DateTimeParser.Lz_zz;
                        }
                        else if (chr == '-')
                        {
                            this.Zone = ParserTimeZone.LocalWestOfUtc;
                            start    += DateTimeParser.Lz_zz;
                        }
                    }
                    if (start >= this._end)
                    {
                        return(start == this._end);
                    }
                    else if (this.ParseChar(start, ':'))
                    {
                        start++;
                        if (start + 1 < this._end && this.method_1(start, out this.ZoneMinute) && this.ZoneMinute <= 99)
                        {
                            start += 2;
                            return(start == this._end);
                        }
                        else
                        {
                            return(start == this._end);
                        }
                    }
                    else if (start + 1 < this._end && this.method_1(start, out this.ZoneMinute) && this.ZoneMinute <= 99)
                    {
                        start += 2;
                        return(start == this._end);
                    }
                    else
                    {
                        return(start == this._end);
                    }
                }
Label2:
                this.Zone = ParserTimeZone.Utc;
                start++;
            }
            return(start == this._end);
        }
コード例 #6
0
        private bool ParseZone(int start)
        {
            if (start < this._end)
            {
                char ch = this._text[start];
                switch (ch)
                {
                case 'Z':
                case 'z':
                    this.Zone = ParserTimeZone.Utc;
                    start++;
                    goto Label_0126;
                }
                if ((((start + 2) < this._end) && this.Parse2Digit(start + Lz_, out this.ZoneHour)) && (this.ZoneHour <= 0x63))
                {
                    switch (ch)
                    {
                    case '+':
                        this.Zone = ParserTimeZone.LocalEastOfUtc;
                        start    += Lz_zz;
                        break;

                    case '-':
                        this.Zone = ParserTimeZone.LocalWestOfUtc;
                        start    += Lz_zz;
                        break;
                    }
                }
                if (start < this._end)
                {
                    if (this.ParseChar(start, ':'))
                    {
                        start++;
                        if ((((start + 1) < this._end) && this.Parse2Digit(start, out this.ZoneMinute)) && (this.ZoneMinute <= 0x63))
                        {
                            start += 2;
                        }
                    }
                    else if ((((start + 1) < this._end) && this.Parse2Digit(start, out this.ZoneMinute)) && (this.ZoneMinute <= 0x63))
                    {
                        start += 2;
                    }
                }
            }
Label_0126:
            return(start == this._end);
        }
コード例 #7
0
        private bool ParseZone(int start)
        {
            if (start < this._length)
            {
                char c = this._text[start];
                if (c == 'Z' || c == 'z')
                {
                    this.Zone = ParserTimeZone.Utc;
                    start++;
                }
                else
                {
                    if (start + 2 < this._length && this.Parse2Digit(start + DateTimeParser.Lz_, out this.ZoneHour) && this.ZoneHour <= 99)
                    {
                        switch (c)
                        {
                        case '+':
                            this.Zone = ParserTimeZone.LocalEastOfUtc;
                            start    += DateTimeParser.Lz_zz;
                            break;

                        case '-':
                            this.Zone = ParserTimeZone.LocalWestOfUtc;
                            start    += DateTimeParser.Lz_zz;
                            break;
                        }
                    }
                    if (start < this._length)
                    {
                        if (this.ParseChar(start, ':'))
                        {
                            start++;
                            if (start + 1 < this._length && this.Parse2Digit(start, out this.ZoneMinute) && this.ZoneMinute <= 99)
                            {
                                start += 2;
                            }
                        }
                        else if (start + 1 < this._length && this.Parse2Digit(start, out this.ZoneMinute) && this.ZoneMinute <= 99)
                        {
                            start += 2;
                        }
                    }
                }
            }
            return(start == this._length);
        }
コード例 #8
0
    private bool ParseZone(int start)
    {
      if (start < _length)
      {
        char ch = _text[start];
        if (ch == 'Z' || ch == 'z')
        {
          Zone = ParserTimeZone.Utc;
          start++;
        }
        else
        {
          if (start + 2 < _length
              && Parse2Digit(start + Lz_, out ZoneHour)
              && ZoneHour <= 99)
          {
            switch (ch)
            {
              case '-':
                Zone = ParserTimeZone.LocalWestOfUtc;
                start += Lz_zz;
                break;

              case '+':
                Zone = ParserTimeZone.LocalEastOfUtc;
                start += Lz_zz;
                break;
            }
          }

          if (start < _length)
          {
            if (ParseChar(start, ':'))
            {
              start += 1;

              if (start + 1 < _length
                  && Parse2Digit(start, out ZoneMinute)
                  && ZoneMinute <= 99)
              {
                start += 2;
              }
            }
            else
            {
              if (start + 1 < _length
                  && Parse2Digit(start, out ZoneMinute)
                  && ZoneMinute <= 99)
              {
                start += 2;
              }
            }
          }
        }
      }

      return (start == _length);
    }
コード例 #9
0
 private bool ParseZone(int start)
 {
     if (start < this._length)
     {
         char c = this._text[start];
         if (c == 'Z' || c == 'z')
         {
             this.Zone = ParserTimeZone.Utc;
             start++;
         }
         else
         {
             if (start + 2 < this._length && this.Parse2Digit(start + DateTimeParser.Lz_, out this.ZoneHour) && this.ZoneHour <= 99)
             {
                 switch (c)
                 {
                     case '+':
                         this.Zone = ParserTimeZone.LocalEastOfUtc;
                         start += DateTimeParser.Lz_zz;
                         break;
                     case '-':
                         this.Zone = ParserTimeZone.LocalWestOfUtc;
                         start += DateTimeParser.Lz_zz;
                         break;
                 }
             }
             if (start < this._length)
             {
                 if (this.ParseChar(start, ':'))
                 {
                     start++;
                     if (start + 1 < this._length && this.Parse2Digit(start, out this.ZoneMinute) && this.ZoneMinute <= 99)
                     {
                         start += 2;
                     }
                 }
                 else if (start + 1 < this._length && this.Parse2Digit(start, out this.ZoneMinute) && this.ZoneMinute <= 99)
                 {
                     start += 2;
                 }
             }
         }
     }
     return start == this._length;
 }