UTC到当地时间(浏览器时间,而不是服务器时间)

时间:2017-05-12 10:10:11

标签: html asp.net-mvc razor razorengine

我有一个网页,其中一些字段包含日期和时间。日期和时间存储为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");
        }
    });

0 个答案:

没有答案