我在Sql
中有一个DateTime
列字段,它将值存储为UTC
。现在我有一个要求,在我的报告中,我必须根据用户访问报告的地理位置将 UTC
转换为 本地时间
。
现在我知道 ToLocalTime()
会将其转换为必需的,但同时它将转换为部署应用程序的位置,即服务器而不是用户的地理位置。
这是我的代码片段..
<td>@string.Format("{0:yyyy-MMM-dd HH:mm:ss}", user.StatusDateTime.ToLocalTime())</td>
我在用户界面中使用 Razor
View 和 javascript
/jquery
。
可能的解决方案是什么?
最佳答案
好的,您可以做的是将日期传递给 View (不使用 .ToLocalTime()
),然后使用 JavaScript 呈现本地日期,如链接中所示。
<script>document.write(new Date('@user.StatusDateTime.ToString("yyyy-MM-dd hh:mm:ss UTC")').toString());</script>
注意 .ToString("yyyy-MM-dd hh:mm:ss UTC")
以满足 JavaScript 的要求(我想还有更好的方法)。
编辑
如果您想以某种特定格式显示日期(例如2015-12-22 12:11:38),您可以使用自定义 JavaScript
函数。这是一个例子。
function getFormattedLocalDate(utcDateString) {
var date = new Date(utcDateString);
var months = [
"Jan", "Feb", "Mar", "Apr", "May", "Jun",
"Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
];
var formattedDate = date.getFullYear() + '-' + months[date.getMonth()] + '-' + date.getDate() + ' ' + date.getHours() + ':' + date.getMinutes() + ':' + date.getSeconds();
return formattedDate;
}
查看 live 。
编辑2
html 表格内使用示例 here .
关于javascript - 将 UTC 日期时间从服务器转换为网页上的本地日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34529257/