2013-05-06 1 views
0

У меня есть сервер базы данных, расположенный в США. Пользователь делает запись из Индии, дата должна быть сохранена как клиентом, так и сервером. но, к сожалению, дата сервера хранится в базе данных. Я показываю записи только для пользователей текущей даты, которые сделаны только в день. Проблема заключается в том, что пользователь вводит запись до 12:30 (клиентская машина), которая отображается пользователю, но после 12:30 вечера (клиентская машина) записи не отображаются только записи, сделанные после 12:30 (клиентская машина) отображаются. Любая идея?Как получить локальную дату клиента от TimeZone в asp.net?

Например: записи делается на 06/05/2013 (DD/MM/YYYY) до 12:30 часов показана когда дата клиента машина 06/05/2013 11:57 утра но когда дата клиентской машины is 06/05/2013 12:57 PM записи enterd не отображаются, но отображаются записи, сделанные после 12:30 вечера. В БД для выше, например. дата создания хранится как 05/05/2013, не знаю почему? В .cs файле:

public static DateTime GetIndianDate(DateTime dateTime) 
     { 
      return TimeZoneInfo.ConvertTimeBySystemTimeZoneId(dateTime, TimeZoneInfo.Local.Id,"India Standard Time").Date; 

     } 

Чтобы показать только записи сегодняшние:

shipments = BLL.GetShipmentsByUserIdNDate(userId, Classes.Common.GetIndianDate(DateTime.Now.Date)); 

public static List<Shipment> GetShipmentsByUserIdNDate(Guid userId, DateTime dateTime) 
     { 
      Entities db = new Entities(); 
      List<Shipment> shipments = (from s in db.Shipments 
             where s.UserId == userId && s.CreatedDate == dateTime 
             select s).ToList(); 
      return shipments; 
     } 

Хотя Вставка:

shipment.CreatedDate = Classes.Common.GetIndianDate(DateTime.Now.Date); 



public static DateTime GetIndianDate(DateTime dateTime) 
     { 
      return TimeZoneInfo.ConvertTimeBySystemTimeZoneId(dateTime, TimeZoneInfo.Local.Id,"India Standard Time").Date; 

     } 

Итак, как я будет хранить дату клиентской машине? теперь он по-прежнему сохраняет только даты сервера.

Помогите оценить!

+0

Возможный дубликат [Преобразование в глобальном масштабе UTC DateTimes в пользовательские локальные DateTimes] (http://stackoverflow.com/questions/16345862/globally-convert-utc-datetimes-to-user-specified-local-datetimes) –

ответ

0

Hey Для этого я рекомендую хранить UTC Дата начала каждой записи, когда вы сохраняете записи.

При выборке записей, пожалуйста, получить временную зону и манипулируют дату UTC

Select getutcdate() --Get UTC Date 

Select getdate()--Get Indain Standared Date 

Select dateadd(minute,30,dateadd(hour,5,getutcdate())) --Get Indian offset +05:30 

Если Вы хотите обновить свою дату из C# кода Пожалуйста, обратитесь эту one.But в этом случае требуется также дата UTC

string utcDateString = System.DateTime.UtcNow.ToString(); 

     DateTime localDate = DateTime.Parse(utcDateString, 
            CultureInfo.CurrentCulture, 
            DateTimeStyles.AssumeUniversal); 

Hop it Помогает вам.

+0

привет @Neeraj Dubey У меня такая же проблема, можете ли вы рассказать мне, как я могу установить часовую зону пользователя из utc в C# – Alok