我有一个全球使用的网络应用程序。
所有日期和时间都以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);