如何从asp.net中的TimeZone获取客户端本地日期?
问题描述:
我有我的数据库服务器位于美国用户从印度输入日期必须存储客户端而不是服务器。但不幸的是,服务器日期存储在数据库中。我只向当天的用户显示仅限于当天的条目。 问题是当用户输入记录直到12:30 PM(客户机)显示给用户,但在12:30 PM(客户机)之后,只有在12:30 PM(客户机)之后才进行输入时,显示任何想法?如何从asp.net中的TimeZone获取客户端本地日期?
例如:在2013年6月5日(DD/MM/YYYY),直到12:30 PM做项显示,当客户机上的日期是2013年6月5日上午11时57 但是当客户机日期是2013年6月5日下午12点57分,输入的条目不会显示,但显示下午12点30分之后输入的条目。在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;
}
那么,如何将存储客户机的日期?现在它仍然只存储服务器日期。
帮助赞赏!
答
对于相同的情况,我建议您在保存记录时每条记录的日期时间。
当你取的记录,请获得时区,如果你想更新从C#代码的日期请参见在这种情况下也需要UTC日期
这one.But操纵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
string utcDateString = System.DateTime.UtcNow.ToString();
DateTime localDate = DateTime.Parse(utcDateString,
CultureInfo.CurrentCulture,
DateTimeStyles.AssumeUniversal);
它帮助你。
+0
嗨@Neeraj Dubey我也有同样的问题,你能告诉我如何设置utc用户时区在c# – Alok 2013-12-06 14:46:59
[将UTC日期时间全局转换为用户指定的本地日期时间]可能的副本(http://stackoverflow.com/questions/16345862/globally-convert-utc-datetimes-to-user-specified-local-datetimes) – 2013-05-06 13:47:43