.net client server with different timezones
===

I have a very strange behavior on an application. The server is in New York(-5 GMT timezone) and the client - me, in Romania(+2 GMT timezone) so there is a 7 hour discrepancy. The problem I'm facing is when I try to save a date, let's say 12:00(day doesn't matter), the client is sending a request with the date 12:00, the 12:00 reaches the database but when it returns the severs returns the hour 19:00. I tried to debug on local to see who messes up the date but since I have the same date on server and on client there is no discrepancy.

This is the parameter sent to server &startDate=07/25/2012%2012:00:00

And this is the result: 1343232000000 - the seconds from the epoch(if you use a converter - http://www.epochconverter.com/ - you will see that the date is in fact Wed Jul 25 2012 19:00:00 

here are some code snippets :

<!-- language: c# -->

    public static void GetProfessionalsHours(List<long> ids, out List<SalonProfessional> professionals)
        {
            professionals = new List<SalonProfessional>();
            using (SqlConnection conn = new SqlConnection(DbConfig.ConnectionString))
            {
                using (
                    SqlCommand command = new SqlCommand("GetProfessionalsHours", conn) { CommandType = CommandType.StoredProcedure })
                {
                    conn.Open();
                    command.Parameters.AddWithValue("professionalIDs", ids.CommaSeparated());
                    using (IDataReader reader = command.ExecuteReader())
                    {
                        //get normal schedule
                        while (reader.Read())
                        {
                            professionals.Add(SalonProfessional.GetSalonProfessional(reader));
                        }
                        reader.NextResult();
                        while (reader.Read())
                        {
                            professionals.Find(p => p.ID == reader.GetInt64(1)).Hours.Add(ProfessionalHours.GetProfessionalHour(reader));
                        }
                        //get overriden hours
                        reader.NextResult();
                        while (reader.Read())
                        {
                            professionals.Find(p => p.ID == reader.GetInt64(1)).OverriddenHours.Add(ProfessionalOverriddenHour.GetProfessionalOverriddenHour(reader));
                        }
                    }
                }
            }
        }

    public static ProfessionalOverriddenHour GetProfessionalOverriddenHour(IDataReader reader)
        {
            return new ProfessionalOverriddenHour()
                       {
                           ID = reader.GetInt64(0),
                           ProfessionalId = reader.GetInt64(1),
                           StartDate = reader.GetDateTime(2),
                           EndDate = reader.GetDateTime(3),
                       };
        }


    public JsonResult CalendarData(List<long> professionalIDs, CalendarData calendarData)
        {
            AjaxResponse response = new AjaxResponse();
            response.Success = true;
            CalendarDataResponseObject responseData = new CalendarDataResponseObject();
            response.Content = responseData;

            try
            {
              List<SalonProfessional> professionals = null;
              CalendarOperations.GetProfessionalsHours(professionalIDs, out professionals);
              responseData.Professionals = professionals;
                            
            }
            catch (Exception ex)
            {
                response.Success = true;
                response.ErrorMessage = "Could not retrieve calendar data";
                ExceptionsOperations.LogException(ex, "Could not retrieve calendar data");
            }

            return Json(response, JsonRequestBehavior.AllowGet);
        }


The problem is on StartDate and EndDate from the ProfessionalOverriddenHour object.
