ASP.NET核心是否基于每个用户设置时区?
我有一个全球使用的web应用程序 所有日期和时间均存储为UTC,当前显示为UTC,并带有一个小页脚,说明“所有时间和日期均以UTC显示” 显然,大多数人既不知道也不关心UTC,因此我希望调用ASP.NET核心是否基于每个用户设置时区?,asp.net,date,datetime,asp.net-core,Asp.net,Date,Datetime,Asp.net Core,我有一个全球使用的web应用程序 所有日期和时间均存储为UTC,当前显示为UTC,并带有一个小页脚,说明“所有时间和日期均以UTC显示” 显然,大多数人既不知道也不关心UTC,因此我希望调用someDate.ToLocalTime()——当用户的系统设置为本地国家/地区,并且浏览器将该信息传递给用户时,这一功能会很好地工作 但是,有时/经常用户系统设置为USA或其他默认值,并显示错误的时间。在本例中,我可以显示可用时区的列表,例如: <form id="selectTimezone" as
someDate.ToLocalTime()
——当用户的系统设置为本地国家/地区,并且浏览器将该信息传递给用户时,这一功能会很好地工作
但是,有时/经常用户系统设置为USA或其他默认值,并显示错误的时间。在本例中,我可以显示可用时区的列表,例如:
<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>
我能想到的最好的办法是提出“时区”要求。当用户登录时,您将提取此声明。对于未经身份验证的用户,您可以使用默认声明或回退到其他策略之一。会话或声明(不是每次请求时声明都会命中数据库吗?),它仍然不会为
toLocalTime()设置会话时区。
对吗?所以我们仍然需要通过Timezone info.convert()传递值,对吗?
TimeZoneInfo.ConvertTime(someDate, myTimeZoneId);