0

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

例如:当客户端机器日期为 06/05/2013 上午 11:57 但客户端机器日期为 06/05/2013 12 时,显示在 06/05/2013(DD/MM/YYYY) 至下午 12:30 完成的条目: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;

        }

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

帮助赞赏!

4

1 回答 1

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);

跳它可以帮助你。

于 2013-05-06T09:37:18.503 回答