如何使用json.SerializerSettings.Converters格式化日期,使其看起来像1288323623006

时间:2013-08-13 07:56:26

标签: c# json

我目前在我的WebAPI应用程序中使用以下日期过滤器:

json.SerializerSettings.Converters.Add( 
   new IsoDateTimeConverter { DateTimeFormat = "dd-MM-yyyy hh:mm" });

我开始使用这个,因为我的前端无法理解日期。如果我没记错的话,这是由于毫秒数字格式化为毫秒。

我需要的是将日期变成这样的格式:

1288323623006

有人可以建议我如何使用序列化程序来完成此操作。这与默认值不同吗?

2 个答案:

答案 0 :(得分:1)

您根本不想使用IsoDateTimeConverter - 可能想要使用JavaScriptDateTimeConverter。这会将其转换为具有正确值的new Date(...) - 但我相信它确实会包含new Date(...)部分。如果您不想这样,您可能需要编写自己的转换器。

编写转换器应该不会太难 - 尽管您需要决定如何处理不同类型的DateTime。例如,如果要求您转换DateTime Kind Unspecified,您是否要假设它实际上已经是UTC,或者已经在系统本地时区,或其他什么?

一旦你及时获得了适当的“即时”,你只需要找到它与Unix纪元(1970年1月1日00:00:00,UTC)之间的毫秒数,并将该毫秒数转换为一个字符串。

答案 1 :(得分:0)

我认为这就是你想要的东西

 private static readonly long DatetimeMinTimeTicks = (new DateTime(1970, 1, 1, 0, 0, 0,     DateTimeKind.Utc)).Ticks;
 long b = (long)((Calendar1.SelectedDate).ToUniversalTime().Ticks - DatetimeMinTimeTicks) / 10000;