Home All Groups Group Topic Archive Search About

DateTime trasfer with web services - DST 2007 errors

Author
15 Mar 2007 4:54 PM
nobody102
We have run into a DST 2007 problem.  I can only get it to happen when
passing a DateTime back from a web service.  The client shows a
duplicate 3:00 AM hour on 3/11/2007.  Here is a dump of the output.
See the duplicate 3:00 AM value on the client dump:

[2864] WS DUMP: 3/11/2007 12:00 AM  3/11/2007 5:00:00 AM   3 11 2007 0
0
[2864] WS DUMP: 3/11/2007 1:00 AM  3/11/2007 6:00:00 AM   3 11 2007 1
0
[2864] WS DUMP: 3/11/2007 2:00 AM  3/11/2007 7:00:00 AM   3 11 2007 2
0
[2864] WS DUMP: 3/11/2007 3:00 AM  3/11/2007 7:00:00 AM   3 11 2007 3
0
[2864] WS DUMP: 3/11/2007 4:00 AM  3/11/2007 8:00:00 AM   3 11 2007 4
0

[3976] CLIENT DUMP: 3/11/2007 12:00 AM  3/11/2007 5:00:00 AM   3 11
2007 0 0
[3976] CLIENT DUMP: 3/11/2007 1:00 AM  3/11/2007 6:00:00 AM   3 11
2007 1 0
[3976] CLIENT DUMP: 3/11/2007 3:00 AM  3/11/2007 7:00:00 AM   3 11
2007 3 0
[3976] CLIENT DUMP: 3/11/2007 3:00 AM  3/11/2007 7:00:00 AM   3 11
2007 3 0
[3976] CLIENT DUMP: 3/11/2007 4:00 AM  3/11/2007 8:00:00 AM   3 11
2007 4 0


Here is the sample code:



Web service classes:
============ Interval.cs ================
using System;

namespace WSDSTTest
{
    /// <summary>
    /// Summary description for Class1.
    /// </summary>
    public class Interval
    {
        private DateTime dt;

        public    DateTime Dt
        {
            get { return dt; }
            set {  dt = value; }
        }

    }
}

================= Dataitem.cs==============
using System;

namespace WSDSTTest
{
    /// <summary>
    /// Summary description for DataItem.
    /// </summary>
    public class DataItem
    {
        public Interval [] Intervals;

        public DataItem(){}

    }
}


===================================
Test Method

[WebMethod]
        public void Test( DateTime tsStart , out DataItem [] DataList )
        {
            const int width = 60;
            int intervals = 5*60/width;

            DateTime ts = tsStart;

            DataList = new DataItem[1];

            DataList[0] = new DataItem();
            DataList[0].Intervals = new Interval[intervals];

            for ( int idx = 0; idx < intervals; idx++ )
            {
                DataList[0].Intervals[idx] = new Interval();
                DataList[0].Intervals[idx].Dt = ts;
                ts = ts.AddMinutes( width );
            }

            DateTime dval;

            for ( int xx = 0; xx < intervals; xx++ )
            {
                dval =  DataList[0].Intervals[xx].Dt ;

                System.Diagnostics.Trace.WriteLine(
                        "WS DUMP: " +
                    dval.ToShortDateString() + " " +
                    dval.ToShortTimeString() + "  " +
                    dval.ToUniversalTime().ToString() + "   " +
                    dval.Month.ToString() + " " + dval.Day.ToString()
+ " " + dval.Year.ToString() + " " + dval.Hour.ToString() + " " +
dval.Minute.ToString()  );

            }
        }

==
Client call test

           DataItem [] di;
            Service1 s1 = new localhost.Service1 ();
            di = s1.Test( ts1 );

            DateTime dval;

            for ( int idx = 0; idx < di[0].Intervals.Length; idx ++ )
            {
                dval =  di[0].Intervals[idx].Dt;

                System.Diagnostics.Trace.WriteLine(
                    "CLIENT DUMP: " +

                    dval.ToShortDateString() + " " +
                    dval.ToShortTimeString() + "  " +
                    dval.ToUniversalTime().ToString() + "   " +
                    dval.Month.ToString() + " " + dval.Day.ToString()
+ " " + dval.Year.ToString() + " " + dval.Hour.ToString() + " " +
dval.Minute.ToString() );

            }

AddThis Social Bookmark Button