From 26899493c05033e14b0d3e6105f5fbcf68dcb1cf Mon Sep 17 00:00:00 2001 From: asayre Date: Mon, 2 Jan 2012 13:32:58 +0000 Subject: [PATCH] Serialization support for DateTimeOffset. --- Server/Serialization.cs | 23 +++++++++++++++++++++++ Server/Utility.cs | 17 +++++++++++++++++ 2 files changed, 40 insertions(+) diff --git a/Server/Serialization.cs b/Server/Serialization.cs index a88e923af..23626a287 100644 --- a/Server/Serialization.cs +++ b/Server/Serialization.cs @@ -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 ); diff --git a/Server/Utility.cs b/Server/Utility.cs index 8c580887d..e9132bd6f 100644 --- a/Server/Utility.cs +++ b/Server/Utility.cs @@ -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