这是尝试解析带有时刻的 ASP.NET 日期.js库的错误还是我的代码错误
Is this attempt to parse a ASP.NET date with moment.js a bug with the library, or an error with my code?
var input = "/Date(1450399658897)/";
var m_utc = moment.utc(input);
我的印象是 moment.utc(...( 的全部要点解析数据,就好像它是 UTC 日期一样。 然而,它似乎实际上将其解析为本地时间,至少在以糟糕的 JSON 日期格式发送时 ASP.NET。
在这里看JS小提琴:
http://jsfiddle.net/6g0nmr3e/5
如果您居住在没有 UTC 偏移量的时区,则不会有太大帮助,但它确实表明该值为 2015-12-17 19:47 Z。 但是,moment.js不是解析为 UTC,而是解析为本地,然后将该值转换为 UTC,给出 2015-12-18 00:47 Z。
我是不是误会了时刻.utc(...(? 还是我应该将此报告为错误?
所以根本问题是我没有正确读取javascript日期输出。 我解释这个
Thu Dec 17 2015 19:47:38 GMT-0500
作为这个
(Thu Dec 17 2015 19:47:38 GMT)-0500
当它实际上是这个
(Thu Dec 17 2015 19:47:38) GMT-0500
来自服务器的日期不正确。 Matt 的直觉是正确的,它是来自实体框架的 DateTimeKind.Unspecified datetime 字段。 不幸的是,这个问题似乎没有任何好的解决方案。 链接解决方案仅适用于正在生成的完整实体,对投影对象没有帮助。 似乎没有适用于所有具体化的事件钩子。
在我的特殊情况下,我正在为 MVC 视图创建一个模型类,所以我将 setter 调整为如下所示:
private DateTime _TimestampUTC;
public DateTime TimestampUTC
{
get { return _TimestampUTC; }
set
{
switch (value.Kind)
{
case DateTimeKind.Unspecified:
_TimestampUTC = DateTime.SpecifyKind(value, DateTimeKind.Utc);
break;
case DateTimeKind.Local:
_TimestampUTC = value.ToUniversalTime();
break;
case DateTimeKind.Utc:
_TimestampUTC = value;
break;
}
}
}
我还使用 T4 生成我的 POCO 实体,所以我也使用这些实体来避免您将看到的大多数其他答案中给出的反射开销。 但是,"最佳"解决方案是指定实体字段的 DateTimeKind 并使其贯穿在该字段上进行的任何投影(包括匿名类型(的方法。 但据我所知,这在当前版本的 EF 中是不可能的。 实际上,我必须记住对所有推送到 javascript 客户端的模型上的每个 UTC DateTime 字段执行此操作。
- ui网格日期单元格过滤器,过滤日期格式导致显示错误的日期
- Chrome Javascript日期构造函数错误
- javascript日期减去小时-错误
- 如何修复FF和IE中的Javascript无效日期错误
- javascript创建日期的月份错误
- Javascript设置日期不起作用,显示错误的时间
- 他们网站上的代码出现启动日期选择器错误
- webkit输入类型=在错误日期发送空值的日期
- Date.js错误地分析了ISO 8601 UTC日期
- 在JavaScript中解析日期时得到错误的结果
- Jquery 日期时间选取器错误
- 显示/返回错误日期的Javascript日期
- JQuery 完整日历在月视图中的错误日期呈现事件
- 获取两个日期之间的日期返回指定日期范围之外的错误日期
- 猫鼬中的错误日期
- 在x轴折线图上绘制错误日期的高位图表(高位股票)
- 错误日期类型(Google可视化)
- 未捕获的类型错误:$(…).日期选择器上的日期选择器错误
- 未捕获类型错误:$(…).日期时间选择器不是一个函数
- 全日单击“返回错误日期”