日期格式序列化成JSON格式时的处理方式

  在使用JSON格式数据响应Ajax请求的时候一般都使用JavaScriptSerializer类的一个实例方法:Serialize(object obj),但是这个方法在序列化日期类型数据的时候是将DateTime类型的数据序列化为形如这种字符串格式的日期:"/Date(1342822827000)/",前端的js获得数据后还需要进一步处理,将其转换成我们能看得懂的时间格式,如:2013年1月14日 19:49:24

  客户端的处理方式:

function DateTimeFormat(strUtc) {
    //   参数:   /Date(1342822827000)/ 
    //(eval(value.replace(/\/Date\((\d+)\)\//gi, "new Date($1)"))).pattern("yyyy-M-d h:m:s.S");    这需要引用一个外部js文件
    return new Date(parseInt(strUtc.replace(/\/Date\((\d+)\)\//gi, "$1"))).toLocaleString();
}
实现思路:将字符串"/Date(1342822827000)/ "中括号中的数字部分提取出来,然后将其转化成number类型,再传如Date构造函数创建一个Date类型的对象,再调用.toLocaleString()函数转换成字符串返回;
  服务器端的处理方式:
//实现一个继承自JavaScriptConverter的类
public class UTCDateTimeConverter:JavaScriptConverter
    {
 
        public override object Deserialize(IDictionary<string, object> dictionary, Type type, JavaScriptSerializer serializer)
        {
            throw new NotImplementedException();
        }
 
        public override IDictionary<string, object> Serialize(object obj, JavaScriptSerializer serializer)
        {
            DateTime dt=(DateTime)obj;
            Dictionary<string, object> dic = new Dictionary<string, object>();
            dic.Add("value",dt.ToString("yyyy-MM-dd"));
            return dic;
        }
 
        public override IEnumerable<Type> SupportedTypes
        {
            get {
                return new List<Type> { typeof(DateTime) }.AsEnumerable<Type>();
            }
        }
    }
//注册一个转换器
JavaScriptSerializer jss = new JavaScriptSerializer();
            List<HKCorpData.Common.UTCDateTimeConverter> listConverter = new List<HKCorpData.Common.UTCDateTimeConverter>();
            listConverter.Add(new HKCorpData.Common.UTCDateTimeConverter());
            jss.RegisterConverters(listConverter);
//序列化
jss.Serialize(list)    如果list对象中包含DateTime类型的成员,则在序列化的时候将输出我们注册的转换器定义的格式:
yyyy-MM-dd,而不是默认的UTC时间格式:
/Date(1342822827000)/ 

转载于:https://www.cnblogs.com/initial/archive/2013/03/10/2953055.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值