Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ASP.NET核心是否基于每个用户设置时区?_Asp.net_Date_Datetime_Asp.net Core - Fatal编程技术网

ASP.NET核心是否基于每个用户设置时区?

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

我有一个全球使用的web应用程序

所有日期和时间均存储为UTC,当前显示为UTC,并带有一个小页脚,说明“所有时间和日期均以UTC显示”

显然,大多数人既不知道也不关心UTC,因此我希望调用
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);