时间转换为客户端时间C#



我有一个需要服务器来处理客户端请求的应用程序。

在此应用程序中非常重要。

每当客户端请求任何内容时,我都想保留请求的时间。

问题是,我的服务器位于我们,客户在澳大利亚。

如何将服务器时间更改为客户端时间并将其保存在数据库中。

即使在每日节省时,这也应该是准确的。

我该如何实现这个

好吧,我在数据库中节省了时间。

在客户端,我有此代码

 DateTime dt = booking.CreateDateTime.Value;
 var localTime = TimeZone.CurrentTimeZone.ToLocalTime(dt);

当我打印该本地时间时,它比本地时间快7个小时。

如何将该时间更改为当地时间?

我知道的指南指出,时间应始终保存在数据库中,从来没有局部。这样,您可以避免许多当地的时间差陷阱(包括节省日光)。

当您需要本地时间时,将其从数据库中检索为UTC并将其转换。您可以使用DateTime Struct来帮助您:

var utcNow = DateTime.UtcNow;
SaveToDB(utcNow);
var utcFromDb = RetrieveTimeFromDb();
var localTime = DateTime.ToLocalTime(utcFromDb);

通常是将日期存储在UTC中,然后在必要时转换为位置。

var date = DateTime.UtcNow();
var tzi = TimeZoneInfo.FindSystemTimeZoneById("US Eastern Standard Time");
var offset = tzi.GetUtcOffset(date);

也许看一下TimeZoneInfo类?

如果那无法满足您的需求,则有NODA时间。

同意应将时间存储在UTC中。当转换为客户端的本地时间(而不是服务器的)时,问题将出现。要转换为客户的当地时间,您需要知道客户的时区信息并将其与UTC时间存储在DB中。

然后,使用这两种信息,您应该可以使用上述方法将其转换为客户的本地时间。

相关内容

  • 没有找到相关文章

最新更新