如何将DateTimes的C#列表转换为本地JS日期
How to convert a C# list of DateTimes to local JS date?
我使用Razor语法循环浏览了一个视图上的C#DateTime列表,并绑定到该视图上的一个表。
在将值绑定到表之前,我需要做的是转换为浏览器的本地时间。从服务器传入的UpdatedTime
处于UTC时区。
因此,在绑定到表之前,我需要以某种方式将Models.Escalation
列表中的每个UpdatedTime
属性转换为本地属性。
我确实尝试过调用@item.UpdatedTime.ToLocalTime()
,但这会转换为服务器端的本地时间,即UTC不是浏览器本地时间
问题:
如何将DateTime的C#列表转换为客户端JS的本地列表?
我知道如何使用瞬间将单个DateTime值转换为本地值。但不确定我如何将其应用于完整的模型。升级列表:
var updatedTimeISO = moment.utc('@Model.UpdatedTime').toISOString();
var updatedTimeLocal = moment(updatedTimeISO);
@Model.UpdatedTime = updatedTimeLocal ;
将C#DateTime绑定到Razor视图中的表的表循环:
<tbody>
@foreach (Models.Escalation item in Model)
{
<tr>
<td data-order="@item.UnixTimeStamp" class="td-limit">@item.UpdatedTime.ToString("f")</td>
<td class="td-limit">@item.EventName</td>
</tr>
}
</tbody>
如果您也知道要转换的时区,那么您应该能够在服务器端实现这一点。
DateTime timeUtc = DateTime.UtcNow;
try
{
TimeZoneInfo cstZone = TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time");
DateTime cstTime = TimeZoneInfo.ConvertTimeFromUtc(timeUtc, cstZone);
Console.WriteLine("The date and time are {0} {1}.",
cstTime,
cstZone.IsDaylightSavingTime(cstTime) ?
cstZone.DaylightName : cstZone.StandardName);
}
catch (TimeZoneNotFoundException)
{
Console.WriteLine("The registry does not define the Central Standard Time zone.");
}
catch (InvalidTimeZoneException)
{
Console.WriteLine("Registry data on the Central Standard Time zone has been corrupted.");
}
如果你不知道浏览器的时区,你可以使用以下jQuery和moment JS代码:
$(".td-limit").each(function () {
var updatedTimeISO = moment.utc($(this).data('order')).toISOString();
var updatedTimeLocal = moment(updatedTimeISO);
$(this).text(updatedTimeLocal);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.14.1/moment.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
<tbody>
<tr>
<td data-order="2013-05-02T21:01:26.0828604Z" class="td-limit"></td>
<td data-order="2013-04-02T21:01:26.0828604Z" class="td-limit"></td>
<td data-order="2013-03-02T21:01:26.0828604Z" class="td-limit"></td>
<td data-order="2013-02-02T21:01:26.0828604Z" class="td-limit"></td>
<td data-order="2013-01-02T21:01:26.0828604Z" class="td-limit"></td>
</tr>
</tbody>
</table>
相关文章:
- 如何获得一个只有时间的moment.js日期对象
- 获取本地时间的JS日期,日期对象中没有时区详细信息
- 将JS日期解析为C#日期时间
- JS-日期检查
- JS日期对象setUTCMonth()将月份增加2
- JS日期对象在某个范围内的百分比
- 如何创建一个考虑时区Node.JS/javascript的JS日期对象
- 格式化moment.js日期的奇怪行为
- 分机.js日期格式区域设置
- 谁能解释为什么我的日期函数通过 JS 日期对象给了我错误的转换
- JS日期CET与GMT的比较
- 哪个 JS 日期时间选取器正确处理 DST 转换
- 在引导 UI 日期选取器中允许 Moment.js 日期
- 如何从时刻.JS日期中删除时间
- 将 JS 日期对象发送到 PHP
- JS日期选择器能够:时间,日期,日期时间,星期几,一年中的一周,一年中的月份等
- 流星:如何让 JS 日期范围选择器调整 API 调用日期参数
- 时刻.js日期到时间戳国际化(德语)
- 向 js 日期对象添加分钟时出错
- 如何让D3数据驱动文档在正确的时区显示moment.js日期时间