在使用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. sqlite性能优化

    1.数据库性能上 1.1 批量事务插入,提升数据插入的性能 由于sqlite默认每次插入都是事务,需要对文件进行读写,那么减少事务次数就能简书磁盘读写次数从而获得性能提升. 1.2 单条sql优于多条 ...

  2. win2008以上的系统,在vmware esxi5.5里怎么使用自定义规范管理器?sysprep

    经过测试,原来08以上的系统自带了sysprep.exe,所以vcenter对08以上的系统直接使用自定义规范管理器即可,跟linux一样了.注意不要跟03一样写入了sn即可. vCenter可使用s ...

  3. jenkins之构建触发器

    build whenever a snapshot dependency is built 当job依赖的快照版本被build时,执行本job. build after other projects ...

  4. 安装face_recognition

    Ubuntu安装face_recognition需要先安装dlib 1.安装dlib的依赖 sudo apt-get install build-essential cmake sudo apt-ge ...

  5. 725. Split Linked List in Parts

    ▶ 将一个单链表拆分为长度尽量接近的 k 段 ● 自己的代码,12 ms ■ 记链表长度为 count,目标段数为 k,quo = count / k,mod = count % k,part = m ...

  6. 关于javascript中的typeof和instanceof介绍

    typeof用来检测给定变量的数据类型 instanceof用来检测对象的类型 typeof用来检测给定变量的数据类型(也可叫做基本类型,基本数据类型.包含undefined.boolean.stri ...

  7. auto_ptr 浅析(转)

    auto_ptr是C++标准库中(<utility>)为了解决资源泄漏的问题提供的一个智能指针类模板(注意:这只是一种简单的智能指针) auto_ptr的实现原理其实就是RAII,在构造的 ...

  8. HBase安装和启动

    目录 认识HBase 前期准备 1. 解压HBase 2. 修改3个配置文件(配置文件目录:hbase-0.96.2-hadoop2/conf/) 3. 将hadoop的hdfs-site.xml和c ...

  9. UIview需要知道的一些事情:setNeedsDisplay、setNeedsLayout

    UIview需要知道的一些事情:setNeedsDisplay.setNeedsLayout 1.在Mac OS中NSWindow的父类是NSResponder,而在i OS 中UIWindow 的父 ...

  10. 新手C#string类常用函数的学习2018.08.04

    ToLower()用于将字符串变为小写,注意字符串的不可变特性,需要重新赋值给另一个字符串变量. s = s.ToLower();//字符串具有不可变性,转换后需要重新赋值,不可仅有s.ToLower ...