# File lib/couchrest/model/core_extensions/time_parsing.rb, line 20
        def parse_iso8601(string)
          if (string =~ /(\d{4})[\-|\/](\d{2})[\-|\/](\d{2})[T|\s](\d{2}):(\d{2}):(\d{2}(\.\d+)?)(Z| ?([\+|\s|\-])?(\d{2}):?(\d{2}))?/)
            # $1 = year
            # $2 = month
            # $3 = day
            # $4 = hours
            # $5 = minutes
            # $6 = seconds (with $7 for fraction)
            # $8 = UTC or Timezone
            # $9 = time zone direction
            # $10 = tz difference hours
            # $11 = tz difference minutes

            if $8 == 'Z' || $8.to_s.empty?
              utc($1.to_i, $2.to_i, $3.to_i, $4.to_i, $5.to_i, $6.to_r)
            else
              new($1.to_i, $2.to_i, $3.to_i, $4.to_i, $5.to_i, $6.to_r, "#{$9 == '-' ? '-' : '+'}#{$10}:#{$11}")
            end
          else
            parse(string)
          end
        end