我的数据库服务器位于美国。用户从INDIA进入日期必须存储客户端而不是服务器。但是,不幸的是服务器日期存储在数据库中。我只向用户显示仅在当天生成的当前日期的条目。 问题是当用户进入记录直到下午12:30(客户端计算机)正在向用户显示但在下午12:30(客户端计算机)之后,条目不会仅显示在12:30 PM之后的条目(客户端)机器)显示。任何想法?
例如:当客户机器日期是06/05/2013 11:57 AM时,显示在06/05/2013(DD / MM / YYYY)完成输入,直到下午12:30 但是当客户机日期是06/05/2013 12:57 PM时,不会显示输入的条目,但会显示在12:30 PM之后生成的条目。在上面的DB例如。创建日期存储为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 :(得分:0)
嘿同样我推荐在保存记录时存储每个记录的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#代码更新日期,请参阅此一个。但在这种情况下还需要UTC日期
string utcDateString = System.DateTime.UtcNow.ToString();
DateTime localDate = DateTime.Parse(utcDateString,
CultureInfo.CurrentCulture,
DateTimeStyles.AssumeUniversal);
跳它帮助你。