【问题标题】:How to get Client Local Date from TimeZone in asp.net?如何从 asp.net 中的 TimeZone 获取客户端本地日期?
【发布时间】:2013-05-06 07:34:49
【问题描述】:

我的数据库服务器位于美国。用户从印度输入日期必须存储在客户端而不是服务器上。但是,不幸的是,服务器日期存储在数据库中。我只向用户显示仅在当天制作的当前日期的条目。 问题是当用户输入记录直到下午 12:30(客户端机器)正在显示给用户,但在下午 12:30(客户端机器)之后,条目不会仅显示在下午 12:30 之后创建的条目(客户端机器)显示。有什么想法吗?

例如:当客户端机器日期为 06/05/2013 上午 11:57 时,显示在 06/05/2013(DD/MM/YYYY) 至下午 12:30 完成的条目 但是当客户端机器日期为 06/05/2013 12:57 PM 时,输入的条目不会显示,但会显示在 12:30 PM 之后输入的条目。在上述数据库中,例如。创建日期存储为 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;

        }

那么,我将如何存储客户端机器的日期?现在它仍然只存储服务器日期。

帮助赞赏!

【问题讨论】:

标签: asp.net datetime timezone cultureinfo


【解决方案1】:

嘿,同样,我建议您在保存记录时存储每条记录的 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);

跳它对你有帮助。

【讨论】:

  • 嗨 @Neeraj Dubey 我有同样的问题,你能告诉我如何在 c# 中从 utc 设置用户时区
猜你喜欢
  • 2010-09-21
  • 2020-05-06
  • 1970-01-01
  • 1970-01-01
  • 2021-10-21
  • 1970-01-01
  • 2011-12-09
  • 1970-01-01
相关资源
最近更新 更多