我有一个网页,其中一些字段包含日期和时间。日期和时间存储为UTC。
我想将它们转换为本地日期时间,如果用户请求它(Model.LocalTime设置为true)
@foreach (var result in Model.DatabaseData)
{
<tr>
@foreach(var column in Model.Columns)
{
<td>
@if (column.FieldType == "DateTimeOffset" && Model.LocalTime)
{
@(((DateTimeOffset)result.Document[column.FieldName]).LocalDateTime)
}
else
{
@result.Document[column.FieldName]
}
</td>
}
</tr>
}
我假设本地日期时间是服务器的本地时间,而不是最终用户的本地时间。是否有可能以某种方式获取用户(webbrowser)本地时间而不是服务器本地时间?
解决方案:
@foreach (var result in Model.DatabaseData)
{
<tr>
@foreach(var column in Model.Columns)
{
<td>
@if (column.FieldType == "DateTimeOffset" && Model.LocalTime)
{
<div class="utcTimeToLocal">
@(((DateTimeOffset)result.Document[column.FieldName]).ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ss"))
</div>
}
else
{
@result.Document[column.FieldName]
}
</td>
}
</tr>
}
Javascript:
$(document).ready(function () {
var timesToConvert = document.getElementsByClassName("utcTimeToLocal")
for (i = 0; i < timesToConvert.length; i++) {
var stillUtc = moment.utc(timesToConvert[i].innerText).toDate();
timesToConvert[i].innerText = new moment(stillUtc).local().format("DD-MM-YYYY HH:mm:ss");
}
});