Exemple #1
0
        public static bool ReadLengthCodedDateTime(this BufferReader reader, out DateTime result)
        {
            byte dateLength   = reader.ReadByte(); //***
            int  year         = 0;
            int  month        = 0;
            int  day          = 0;
            int  hour         = 0;
            int  minute       = 0;
            int  second       = 0;
            int  micro_second = 0;

            //0, 4,7,11
            switch (dateLength)
            {
            default:
            case 0:
                result = DateTime.MinValue;
                return(false);

            case 4:
                year   = (int)reader.U2();
                month  = reader.U1();
                day    = reader.U1();
                result = new DateTime(year, month, day);
                return(true);

            case 7:
                year   = (int)reader.U2();
                month  = reader.U1();
                day    = reader.U1();
                hour   = reader.U1();
                minute = reader.U1();
                second = reader.U1();
                result = new DateTime(year, month, day, hour, minute, second);
                return(true);

            case 11:
                year         = (int)reader.U2();
                month        = reader.U1();
                day          = reader.U1();
                hour         = reader.U1();
                minute       = reader.U1();
                second       = reader.U1();
                micro_second = (int)reader.ReadUnsigedNumber(4);
                result       = new DateTime(year, month, day, hour, minute, second, micro_second / 1000);
                return(true);
            }
            //if (dateLength == 0)
            //{
            //    result = DateTime.MinValue;
            //    return false;
            //}
            //if (dateLength >= 4)
            //{
            //    year = (int)ParseUnsigned2();
            //    month = ParseUnsigned1();
            //    day = ParseUnsigned1();
            //    dateTime = new DateTime(year, month, day);
            //}
            //if (dateLength >= 7)
            //{
            //    hour = ParseUnsigned1();
            //    minute = ParseUnsigned1();
            //    second = ParseUnsigned1();
            //    dateTime = new DateTime(year, month, day, hour, minute, second);
            //}
            //if (dateLength == 11)
            //{
            //    micro_second = (int)ParseUnsignedNumber(4);
            //    int milli_second = micro_second / 1000;
            //    dateTime = new DateTime(year, month, day, hour, minute, second, milli_second);
            //}
            //else
            //{
            //    if (dateLength == 7)
            //    {
            //        dateTime = new DateTime(year, month, day, hour, minute, second);
            //    }
            //    else if (dateLength == 4)
            //    {
            //        dateTime = new DateTime(year, month, day);
            //    }
            //    else
            //    {
            //        dateTime = new DateTime(0, 0, 0, 0, 0, 0, 0, 0);
            //    }
            //}

            //return dateTime;
        }