Strange DateTime Problem

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Looch

    #1

    Strange DateTime Problem

    All,

    I'm using a WinForm app that calls methods on a remotable object. The
    app server hosting the object is in New York. Using the same exact
    application, a Sql Server 2005 datetime column's info is being
    displayed as '3/25/2008' in California and '3/26/2008' in New York
    (outside the LAN) where the data in the column is '3/26/2008 12:00:00
    AM' (I'm converting the to the short date format in the app code). I
    can get the California app to display the correct short date if I edit
    the date in Sql Server to a time later in the day (i.e. '3/26/2008
    10:00:00 AM'). What's the deal? Time zones?? Can't be...

    Thanks
  • Jon Slaughter

    #2
    Re: Strange DateTime Problem


    "Looch" <lucianoj2005@y ahoo.comwrote in message
    news:e33e016a-b692-4791-93de-a0d0ada378e7@59 g2000hsb.google groups.com...
    All,
    >
    I'm using a WinForm app that calls methods on a remotable object. The
    app server hosting the object is in New York. Using the same exact
    application, a Sql Server 2005 datetime column's info is being
    displayed as '3/25/2008' in California and '3/26/2008' in New York
    (outside the LAN) where the data in the column is '3/26/2008 12:00:00
    AM' (I'm converting the to the short date format in the app code). I
    can get the California app to display the correct short date if I edit
    the date in Sql Server to a time later in the day (i.e. '3/26/2008
    10:00:00 AM'). What's the deal? Time zones?? Can't be...
    >
    Try DateTimeOffset?


    Comment

    • Looch

      #3
      Re: Strange DateTime Problem

      Thanks for the quick responses.

      I'm certainly not disagreeing but I don't get it. The remotable object
      method in question selects four fields from the db (one being the
      datetime type mentioned above), uses those four items to set
      MyObject's four properties, adds MyObject to an array list, serializes
      that array list to binary and sends over http. The client
      deserializes, looks in the array list, casts the object to MyObject
      type and displays the properties in separate text boxes.

      Where/why would the CLR manipulate the date property based on the
      local time zone before displaying the value?

      (Interstingly I found the threshold to be '3/26/2008 4:00:00 AM' to be
      where the west coast app will actual display '3/26/2008' - '3/26/2008
      3:59:59 AM' will still show '3/25/2008'. Could the '3' in the hours
      place be related to the three hour difference between the east and
      west coast?).

      Thanks again for the help.

      Comment

      • Looch

        #4
        Re: Strange DateTime Problem

        I found the answer - DateTime.AddHou rs

        Thanks again.

        Comment

        • Steve Gerrard

          #5
          Re: Strange DateTime Problem

          Looch wrote:
          Thanks for the quick responses.
          >
          Where/why would the CLR manipulate the date property based on the
          local time zone before displaying the value?
          serializes
          that array list to binary and sends over http.
          the serialized date will include a time zone...
          >The client
          deserializes,
          deserializing will adjust the date to local time.


          Comment

          • GArlington

            #6
            Re: Strange DateTime Problem

            On Mar 26, 11:31 pm, Looch <lucianoj2...@y ahoo.comwrote:
            Thanks for the quick responses.
            >
            I'm certainly not disagreeing but I don't get it. The remotable object
            method in question selects four fields from the db (one being the
            datetime type mentioned above)
            <snip>

            If you consider that this date/time can be create/edit date/time...
            User 1 in New York creates/edits the record, User 2 in California
            opens the same record few minutes later...
            What do you expect User 2 to see? That the particular record WILL be
            created/edited in 3 Hours and 55 minutes?

            Comment

            • Looch

              #7
              Re: Strange DateTime Problem

              I guess I was expecting that if User1 (in New York) created a record
              where one of the columns is a datetime type and the value created was
              '3/26/2008 3:12:53 AM' that if User2 in California queried that record
              and returned the value of that same column the return value would be
              '3/26/2008 3:12:53 AM'. Instead I was getting the value minus four
              hours.

              Comment

              • Stephany Young

                #8
                Re: Strange DateTime Problem

                The issue is, I think you find when you delve deeper, is one of
                serialization.

                The remoting host (at the server end), will be serializing the datetime, and
                the local remoting client will be deserializing it.

                Unless it is told otherwise, the remoting host will including timezone
                information in the serialized datetime. The timezone information will be is
                respect of the timezone setting for the 'box' on which the serialization is
                performed.

                When the local remoting client deserializes it, because it contains timezone
                information, that timezone information is honoured. The interpretation of
                the value will be in respect of the timezone setting for the 'box' on which
                the deserialization is performed, but taking into account the timezone
                information embedded in the serialized value.

                For example the value of:
                3/26/2008 3:12:53 AM
                will be serialized as something like:
                2008-03-26T03:12:53Z+4: 00

                To get the behaviour you want, you would need to code the host and client
                portions of the remotable application to ensure that all datetime values are
                serialized and deserialized in a timezone agnostic manner.

                Clear as mud????


                "Looch" <lucianoj2005@y ahoo.comwrote in message
                news:03827415-8db3-4ad6-b770-1c6e00900b22@i7 g2000prf.google groups.com...
                >I guess I was expecting that if User1 (in New York) created a record
                where one of the columns is a datetime type and the value created was
                '3/26/2008 3:12:53 AM' that if User2 in California queried that record
                and returned the value of that same column the return value would be
                '3/26/2008 3:12:53 AM'. Instead I was getting the value minus four
                hours.

                Comment

                Working...