ASP.NET Core在每个用户的基础上设置时区?

时间:2017-04-26 20:10:35

标签: asp.net date datetime asp.net-core

我有一个全球使用的网络应用程序。

所有日期和时间都以UTC格式存储,当前显示为UTC,并以小页脚显示"所有时间和日期均以UTC"显示。

显然,大多数人不知道也不关心UTC,所以我打算打电话给someDate.ToLocalTime() - 当用户的系统设置为当地国家和浏览器传递该信息。

但是,有时/通常用户系统设置为美国或其他默认设置并显示错误的时间。在这种情况下,我可以显示可用的时区列表,例如:

<form id="selectTimezone" asp-controller="Account" asp-action="SetTimezone" asp-route-returnUrl="@Context.Request.Path" asp-area="" method="post" role="form">
    <div class="form-group form-group-sm">
        <label class="control-label">@Localiser["Timezone:"]</label>
        <select name="timezoneId" class="form-control" asp-for="@TimeZoneInfo.Local.Id">
            @foreach (var timeZone in TimeZoneInfo.GetSystemTimeZones())
            {
                <option value="@(timeZone.Id)">@timeZone.DisplayName (@timeZone.StandardName)</option>
            }
        </select>
        <button type="submit" class="btn btn-primary btn-sm" style="margin-bottom: 0px;">@SharedLocaliser["Set Language"]</button>
    </div>
</form>

我的问题是,我无法找到它 - 我可以设置会话范围的默认时区吗?

或者我是否需要将其存储在用户的帐户中,然后将其读入Cookie并通过每次向UTC添加所需的秒数来处理它?<​​/ p>

类似的东西:

TimeZoneInfo.ConvertTime(someDate, myTimeZoneId);

0 个答案:

没有答案