/// <summary> /// Enables the contruction of a <b>MyCatDateTime</b> object by parsing a string. /// </summary> public MyCatDateTime(string dateTime) : this(MyCatDateTime.Parse(dateTime)) { }
void IMyCatValue.WriteValue(MyCatPacket packet, bool binary, object value, int length) { MyCatDateTime dtValue; string valueAsString = value as string; if (value is DateTime) { dtValue = new MyCatDateTime(type, (DateTime)value); } else if (valueAsString != null) { dtValue = MyCatDateTime.Parse(valueAsString); } else if (value is MyCatDateTime) { dtValue = (MyCatDateTime)value; } else { throw new MyCatException("Unable to serialize date/time value."); } if (!binary) { SerializeText(packet, dtValue); return; } if (dtValue.Microsecond > 0) { packet.WriteByte(11); } else { packet.WriteByte(7); } packet.WriteInteger(dtValue.Year, 2); packet.WriteByte((byte)dtValue.Month); packet.WriteByte((byte)dtValue.Day); if (type == MyCatDbType.Date) { packet.WriteByte(0); packet.WriteByte(0); packet.WriteByte(0); } else { packet.WriteByte((byte)dtValue.Hour); packet.WriteByte((byte)dtValue.Minute); packet.WriteByte((byte)dtValue.Second); } if (dtValue.Microsecond > 0) { long val = dtValue.Microsecond; for (int x = 0; x < 4; x++) { packet.WriteByte((byte)(val & 0xff)); val >>= 8; } } }