Serialization support for DateTimeOffset.

This commit is contained in:
asayre 2012-01-02 13:32:58 +00:00
parent 3fd844cfa0
commit 26899493c0
2 changed files with 40 additions and 0 deletions

View file

@ -38,6 +38,7 @@ namespace Server
public abstract string ReadString();
public abstract DateTime ReadDateTime();
public abstract DateTimeOffset ReadDateTimeOffset();
public abstract TimeSpan ReadTimeSpan();
public abstract DateTime ReadDeltaTime();
public abstract decimal ReadDecimal();
@ -98,6 +99,7 @@ namespace Server
public abstract void Write( string value );
public abstract void Write( DateTime value );
public abstract void Write( DateTimeOffset value );
public abstract void Write( TimeSpan value );
public abstract void Write( decimal value );
public abstract void Write( long value );
@ -337,6 +339,12 @@ namespace Server
Write( value.Ticks );
}
public override void Write( DateTimeOffset value )
{
Write( value.Ticks );
Write( value.Offset.Ticks );
}
public override void WriteDeltaTime( DateTime value )
{
long ticks = value.Ticks;
@ -870,6 +878,14 @@ namespace Server
return new DateTime( m_File.ReadInt64() );
}
public override DateTimeOffset ReadDateTimeOffset()
{
long ticks = m_File.ReadInt64();
TimeSpan offset = new TimeSpan( m_File.ReadInt64() );
return new DateTimeOffset( ticks, offset );
}
public override TimeSpan ReadTimeSpan()
{
return new TimeSpan( m_File.ReadInt64() );
@ -1318,6 +1334,13 @@ namespace Server
OnWrite();
}
public override void Write( DateTimeOffset value )
{
m_Bin.Write( value.Ticks );
m_Bin.Write( value.Offset.Ticks );
OnWrite();
}
public override void Write( TimeSpan value )
{
m_Bin.Write( value.Ticks );

View file

@ -555,6 +555,23 @@ namespace Server
}
}
public static DateTimeOffset GetXMLDateTimeOffset( string dateTimeOffsetString, DateTimeOffset defaultValue )
{
try
{
return XmlConvert.ToDateTimeOffset( dateTimeOffsetString );
}
catch
{
DateTimeOffset d;
if( DateTimeOffset.TryParse( dateTimeOffsetString, out d ) )
return d;
return defaultValue;
}
}
public static TimeSpan GetXMLTimeSpan( string timeSpanString, TimeSpan defaultValue )
{
try