在使用ServiceStack.Text的序列化为json格式的时候,当属性为datetime的时候,返回的是一个new date(324234234)的字符串,看着非常不爽。 如果是js来获取结果还好,

如果是c#获取这种字符串是没有办法转化为时间的。 所以我改造了下,让返回的是‘2015-06-06 09:11:11’的格式。

先获取源码, 然后在jsconfig.cs中加入如下代码

Code Snippet
  1. private static bool dMsDatetimeFormat=true;
  2.       public static bool MsDatetimeFormat
  3.       {
  4.           get { return dMsDatetimeFormat; }
  5.           set { dMsDatetimeFormat = value; }
  6.       }

这是用来标示是否转化为刚才看到的那种自定义的格式。

接着 修改DateTimeSerializer.cs文件的   public static void WriteWcfJsonDate(TextWriter writer, DateTime dateTime)方法

修改后的代码如下

Code Snippet
  1. public static void WriteWcfJsonDate(TextWriter writer, DateTime dateTime)
  2.     {
  3.         if (JsConfig.AssumeUtc && dateTime.Kind == DateTimeKind.Unspecified)
  4.         {
  5.             dateTime = DateTime.SpecifyKind(dateTime, DateTimeKind.Utc);
  6.         }
  7.         if (JsConfig.DateHandler == DateHandler.ISO8601)
  8.         {
  9.             writer.Write(dateTime.ToString("o", CultureInfo.InvariantCulture));
  10.             return;
  11.         }
  12.         if (JsConfig.DateHandler == DateHandler.RFC1123)
  13.         {
  14.             writer.Write(dateTime.ToUniversalTime().ToString("R", CultureInfo.InvariantCulture));
  15.             return;
  16.         }
  17.         var timestamp = dateTime.ToUnixTimeMs();
  18.         string offset = null;
  19.         if (dateTime.Kind != DateTimeKind.Utc)
  20.         {
  21.             if (JsConfig.DateHandler == DateHandler.TimestampOffset && dateTime.Kind == DateTimeKind.Unspecified)
  22.                 offset = UnspecifiedOffset;
  23.             else
  24.                 offset = LocalTimeZone.GetUtcOffset(dateTime).ToTimeOffsetString();
  25.         }
  26.         else
  27.         {
  28.             // Normally the JsonDateHandler.TimestampOffset doesn't append an offset for Utc dates, but if
  29.             // the JsConfig.AppendUtcOffset is set then we will
  30.             if (JsConfig.DateHandler == DateHandler.TimestampOffset && JsConfig.AppendUtcOffset.HasValue && JsConfig.AppendUtcOffset.Value)
  31.                 offset = UtcOffset;
  32.         }
  33.         if (JsConfig.MsDatetimeFormat)
  34.         {
  35.             writer.Write(dateTime.ToString("yyyy-MM-dd hh:mm:ss"));
  36.         }
  37.         else
  38.         {
  39.             writer.Write(EscapedWcfJsonPrefix);
  40.             writer.Write(timestamp);
  41.             if (offset != null)
  42.             {
  43.                 writer.Write(offset);
  44.             }
  45.             writer.Write(EscapedWcfJsonSuffix);
  46.         }
  47.     }

这样再使用序列化方法的时候返回的就是’2015-09-08  11:11:11’的格式了

Code Snippet
  1. ServiceStack.Text.JsonSerializer.SerializeToString(new
  2.                 {   date=DateTime.Now,
  3.                     SecureContent = "here's some secure content that you can only see if you provide a correct apiKey",
  4.                     User = "user"
  5.                 })

当你不想用的时候,想恢复默认的方式,只要序列化前用这句就行了

ServiceStack.Text.JsConfig.MsDatetimeFormat = false;

ServiceStack.Text json中序列化日期格式问题的解决的更多相关文章

  1. springMvc返回Json中自定义日期格式

    (一)输出json数据 springmvc中使用jackson-mapper-asl即可进行json输出,在配置上有几点: 1.使用mvc:annotation-driven 2.在依赖管理中添加ja ...

  2. json中的日期格式转换(扩展new date()显示格式)

    在java  spring mvc 开发过程中,通过json 格式,向前端传递数据,日期格式发生了转变, 在前台数据展示时,要进行一定格式的转换才能正常显示: 我在开发中使用了easy ui 和my ...

  3. (十七)springMvc 对表单提交的日期以及JSON中的日期的参数绑定

    文章目录 前言 `Ajax`提交表单数据 `Ajax`提交`JSON` 格式数据 解决输出JSON乱码的问题 控制JSON输出日期格式 小记 前言 springMVC 提供强大的参数绑定功能,使得我们 ...

  4. spring mvc3中JACKSON序列化日期格式的问题 - 墙头草的Java - BlogJava

    body { font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI ...

  5. [.Net Core 3.0+/.Net 5] System.Text.Json中时间格式化

    简介 .Net Core 3.0开始全新推出了一个名为System.Text.Json的Json解析库,用于序列化和反序列化Json,此库的设计是为了取代Json.Net(Newtonsoft.Jso ...

  6. SpringMVC返回Json,自定义Json中Date类型格式

    http://www.cnblogs.com/jsczljh/p/3654636.html —————————————————————————————————————————————————————— ...

  7. 在Gridview 中 对日期格式的控制

    在数据库中保存日期格式的时候,我们需要在客户端的显示有自己的要求 这就需要对 datatime 类型的数据进行控制,使之显示为你需要的格式 数据库中 如果不对其进行控制,显示的格式为 当在前端页面上进 ...

  8. Java处理Excel中的日期格式

    Java处理Excel中的日期格式 2011-12-23 17:34:03|  分类: java |举报 |字号 订阅 下载LOFTER 我的照片书  |   在Excel中的日期格式,其数值为距离1 ...

  9. 工具类:关于解决数据库中的日期格式,经过response.getWriter().write(json)打到前台日期格式混乱的问题的总结

    经过response.getWriter().write(json)打到前台日期格式混乱的问题的总结 import java.text.SimpleDateFormat;import net.sf.j ...

随机推荐

  1. Ngnix常用的操作

    Nginx的常用参数如下: # /usr/local/nginx/sbin/nginx -h nginx version: nginx/0.7.63 Usage: nginx [-?hvVt] [-s ...

  2. 九jQuery源码解析之.each()

    jQuery中存在两个each方法都是用于遍历的, 一个是对jQuery对象集合使用.each(),用于遍历这个集合; .each(function(index,element)) 还有一个是扩展jQ ...

  3. JVM实例以及内存的分配机制

    JVM:一台用来模拟计算机执行计算指令的虚拟计算机,拥有自己的指令,指令执行环境,虚拟内存等. 下面介绍虚拟机(JVM)--cpu,寄存器,内存,指令 ======================== ...

  4. 集合-强大的集合工具类:java.util.Collections中未包含的集合工具

    任何对JDK集合框架有经验的程序员都熟悉和喜欢java.util.Collections包含的工具方法.Guava沿着这些路线提供了更多的工具方法:适用于所有集合的静态方法.这是Guava最流行和成熟 ...

  5. Linux常用命令之-grep

    简介 grep全称Global Regular Expression Print是一种强大的文本搜索工具,它能使用给定的正则表达式按行搜索文本输出,文件,目录等,统计并输出匹配的信息,grep在文本查 ...

  6. hadoop学习day1环境配置笔记(非完整流程)

    hdfs的工作机制: 1.客户把一个文件存入hdfs,其实hdfs会把这个文件切块后,分散存储在N台linux机器系统中(负责存储文件块的角色:data node)<准确来说:切块的行为是由客户 ...

  7. RAD C++Builder xe7 std::map xtree BUG

    c++Builder 6 下的std::map还能用,有代码提示. 换到xe7,代码提示出来就一个tt.operator [](),代码没法往下写了. 最后把Target Platforms切换到64 ...

  8. 如何解决JSP页面显示乱码问题

    一.JSP页面显示乱码 下面的显示JSP页面(display.jsp)就出现乱码: <html> <head> <title>JSP的中文处理</title& ...

  9. Git--时光穿梭机之删除文件06

    在Git中,删除也是一个修改操作,我们实际操作一下吧,先添加一个文件test.txt到Git并且提交 $ git add test.txt $ git commit -m "add test ...

  10. 记一次结巴分词.net core 2.0版 nuget发布过程

    最近用到分词考虑很久,选用了结巴分词,原因见博客Lucene.net(4.8.0) 学习问题记录五: JIEba分词和Lucene的结合,以及对分词器的思考 既然选好了,难就开始行动吧 . 查了.ne ...