前言:Json对日期的处理很特别,我们不能简单的转换而得到我们想要的结果,需要进行特殊处理

一、JSon序列化和反序列化对日期的处理

JsonHelper类:

  1. using System.IO;
  2. using System.Linq;
  3. using System.Runtime.Serialization.Json;
  4. using System.Text;
  5. using System.Text.RegularExpressions;
  6. using System.Web;
  7.  
  8. namespace MVCEFDbFirstTutotrials.Common
  9. {
  10. public class JsonHelper
  11. {
  12. public static void Test()
  13. {
  14. Product product = new Product()
  15. {
  16. Name = "",
  17. Description = "",
  18. Price = ,
  19. Color = "color",
  20. PublishOn = DateTime.Now
  21. };
  22. string jsonString = JsonSerializer<Product>(product);
  23. Product product1 = JsonDeserialize<Product>(jsonString);
  24. }
  25.  
  26. /// <summary>
  27. /// JSON序列化
  28. /// </summary>
  29. public static string JsonSerializer<T>(T t)
  30. {
  31. DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));
  32. MemoryStream ms = new MemoryStream();
  33. ser.WriteObject(ms, t);
  34. string jsonString = Encoding.UTF8.GetString(ms.ToArray());
  35. ms.Close();
  36. //替换Json的Date字符串
  37. string p = @"Date/((/d+)/+/d+/)///";
  38. MatchEvaluator matchEvaluator = new MatchEvaluator(ConvertJsonDateToDateString);
  39. Regex reg = new Regex(p);
  40. jsonString = reg.Replace(jsonString, matchEvaluator);
  41. return jsonString;
  42. }
  43. /// <summary>
  44. /// JSON反序列化
  45. /// </summary>
  46. public static T JsonDeserialize<T>(string jsonString)
  47. {
  48. //将"yyyy-MM-dd HH:mm:ss"格式的字符串转为"//Date(1294499956278+0800)//"格式
  49. string p = @"\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}";
  50. MatchEvaluator matchEvaluator = new MatchEvaluator(ConvertDateStringToJsonDate);
  51. Regex reg = new Regex(p);
  52. jsonString = reg.Replace(jsonString, matchEvaluator);
  53. DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));
  54. MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonString));
  55. T obj = (T)ser.ReadObject(ms);
  56. return obj;
  57. }
  58.  
  59. /// <summary>
  60. /// 将Json序列化的时间由/Date(1294499956278+0800)转为yyyy-MM-dd HH:mm:ss字符串
  61. /// </summary>
  62. private static string ConvertJsonDateToDateString(Match m)
  63. {
  64. string result = string.Empty;
  65. DateTime dt = new DateTime(, , );
  66. dt = dt.AddMilliseconds(long.Parse(m.Groups[].Value));
  67. dt = dt.ToLocalTime();
  68. result = dt.ToString("yyyy-MM-dd HH:mm:ss");
  69. return result;
  70. }
  71. /// <summary>
  72. /// 将时间字符串转为Json时间
  73. /// </summary>
  74. private static string ConvertDateStringToJsonDate(Match m)
  75. {
  76. string result = string.Empty;
  77. DateTime dt = DateTime.Parse(m.Groups[].Value);
  78. dt = dt.ToUniversalTime();
  79. TimeSpan ts = dt - DateTime.Parse("1970-01-01");
  80. result = string.Format("\\/Date({0}+0800)\\/", ts.TotalMilliseconds);
  81. return result;
  82. }
  83. }
  84.  
  85. }

二、前台对返回的\/Date(1294499956278+0800) \/日期格式进行处理:

  1. function ChangeDateFormat(jsondate) {
  2. jsondate = jsondate.replace("/Date(", "").replace(")/", "");
  3. if (jsondate.indexOf("+") > ) {
  4. jsondate = jsondate.substring(, jsondate.indexOf("+"));
  5. }
  6. else if (jsondate.indexOf("-") > ) {
  7. jsondate = jsondate.substring(, jsondate.indexOf("-"));
  8. }
  9.  
  10. var date = new Date(parseInt(jsondate, ));
  11. var month = date.getMonth() + < ? "" + (date.getMonth() + ) : date.getMonth() + ;
  12. var currentDate = date.getDate() < ? "" + date.getDate() : date.getDate();
  13. return date.getFullYear() + "-" + month + "-" + currentDate;
  14. }

简单Demo: ChangeDateFormat("\/Date(1294499956278+0800)\/");

结果: 2011-1-8

Json中对日期的处理的更多相关文章

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

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

  2. JSON中的日期格式化

    Json字符串中的日期格式化函数 ConvertJsonDate: function (jd) { var d = new Date(parseInt(jd.replace("/Date(& ...

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

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

  4. ServiceStack.Text json中序列化日期格式问题的解决

    标记: ServiceStack.Text,json,序列化,日期 在使用ServiceStack.Text的序列化为json格式的时候,当属性为datetime的时候,返回的是一个new date( ...

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

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

  6. SpringMVC表单或Json中日期字符串与JavaBean的Date类型的转换

    SpringMVC表单或Json中日期字符串与JavaBean的Date类型的转换 场景一:表单中的日期字符串和JavaBean的Date类型的转换 在使用SpringMVC的时候,经常会遇到表单中的 ...

  7. js json中的时间转换格式

    //根据json中的日期格式,转换成yyyy-mm-dd HH:mm:ss function ChangeDateFormat(cellval) { var date = new Date(parse ...

  8. Java "JSON中无分隔符日期字符串处理"

    Json 中日期类型数据处理,服务端传输的日期没有分隔符,一般格式就两种,[20151212121212]即yyyyMMddhhmmss和[121212]hhmmss import java.text ...

  9. mvc4中jquery-ui日期控件datepicker的应用

    mvc4中jquery-ui日期控件datepicker的应用 本文适合mvc中日期选择需要的同学: 假设读者已经具备了mvc4和javascript中的相关知识 一. 开始项目之前把项目中目录:/C ...

随机推荐

  1. mosquitto centos安装配置

    周末弄wordpress的Mysql,一不小心把wordpress弄不好了,写了的好几遍文章也没有了,一怒之下,把整个系统重装了,安装了不带任何软件的新系统,重新搭一遍. 0.安装ftp服务器 #yu ...

  2. 根据url路径获取图片并显示到ListView中

    项目开发中我们需要从网络获取图片显示到控件中,很多开源框架如Picasso可以实现图片下载和缓存功能.这里介绍的是一种简易的网络图片获取方式并把它显示到ListView中. 本案例实现的效果如下: 项 ...

  3. Gitlab CI 持续集成的完整实践

    Gitlab CI 持续集成的完整实践 本着公司团队初创,又在空档期想搞点事情,搭建了私有Gitlab的契机,顺便把持续集成搭建起,实现了对Python服务端代码的单元测试.静态代码分析和接口测试的持 ...

  4. sas data infile 语句选项

    1)FIRSTOBS=N,从第N行开始读取数据2)OBS=M,到第M行结束数据读取3)MISSOVER:当一行数据读完的时候,不要转到下一行,而是为其余的变量分配缺失值4)TRUNCOVER:变量读取 ...

  5. webpy 解决中文出现UnicodeDecodeError: 'ascii' codec can't decode byte 问题

    1.问题描述:一个在Django框架下使用Python编写的定时更新项目,在Windows系统下测试无误,在Linux系统下测试,报如下错误: ascii codec can't decode byt ...

  6. 【Selenium】各种方式在选择的时候应该怎么选择

    最后再总结一下,各种方式在选择的时候应该怎么选择: 1. 当页面元素有id属性时,最好尽量用id来定位.但由于现实项目中很多程序员其实写的代码并不规范,会缺少很多标准属性,这时就只有选择其他定位方法. ...

  7. EasyUi 复杂多表头设置

    columns: [ [ { field: 'Test', title: '测试', rowspan: 3, width: 100, sortable: true }, { title: '测试1', ...

  8. 面试回顾——kafka

    关于消息队列的使用场景:https://www.cnblogs.com/linjiqin/p/5720865.html kafka: Topic Kafka将消息种子(Feed)分门别类 每一类的消息 ...

  9. logback的使用和logback.xml详解,在Spring项目中使用log打印日志

    logback的使用和logback.xml详解 一.logback的介绍 Logback是由log4j创始人设计的另一个开源日志组件,官方网站: http://logback.qos.ch.它当前分 ...

  10. Apache配置默认主页

    Apache配置默认主页 进入Apache的conf目录 打开httpd.conf文件输入: 在文件末位添加: <Directory "F:/www_php/blog_com/my_b ...