您当前的位置: 首页 >  json

寒冰屋

暂无认证

  • 5浏览

    0关注

    2286博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

关于json时间字符串格式化处理

寒冰屋 发布时间:2016-06-17 13:04:18 ,浏览量:5

背景:前段时间在用easyui框架做一个项目的时候,由于对数据集合中显示的时间,有的希望是日期(即不带时分秒)而有的又希望是时间(即带有时分秒)的样式,而json字符串返回的时间字符串在日期和时间直接还带有字母【T】,开始只是使用easyui自带的format方式在前端进行处理,这样也很方便,至少满足了上面的需求。但是后期在做自动生成列等功能的时候,发现不好使用easyui自带的前端处理方式(也许是easyui的研究不到位吧委屈)。于是开始考虑在后台传数据的时候就处理好,这样前台UI直接显示就好了。沿着这个思路也好了很多网上资料学习,最终解决了这个问题。

开始的时候我找到了这样的处理方式,暂且说是方法一。

首先在要导入Newtonsoft.Json.dll类库,我的项目是用的.net 4.0,所以这里导入的Newtonsoft.Json.dll也是4.0版本的。

然后直接看代码:

//通过这个json.net的对象设置时间的展示
IsoDateTimeConverter dtConverter = newIsoDateTimeConverter { DateTimeFormat = "yyyy-MM-dd" };
List lstViews = newList();
//添加需要的数据到lstViews中
…….
……
string data =JsonConvert.SerializeObject(lstViews, dtConverter);

这种方法虽然实现了后台对时间字符串的处理,但是如果返回的json字符串中既有日期又有时间的要求则无法实现,因为它只能统一的格式化时间,不能两种都实现。

 

所以后来我使用了第二中方式来处理,而且建议大家使用。

首先,还是Newtonsoft.Json.dll导入问题,这里就不多说了,相信大家都搞得定的。

具体实现就直接代码了

var lstData = newList();
//添加需要的数据到lstData中
…….
……
var formatData = lstData.Select(x => new
                            {
                                x.Id,
                                x.ItemId,
                                x.ItemName,
                                x.Remark,
                                x.TimeOfDay,
                                x.ExpendWeek,
                                ExpendDate =x.ExpendDate.ToString("yyyy-MM-dd"),
                                x.ExpendAmount,
                                x.CreateBy,
                                CreateDate = x.CreateDate == null ?"" : x.CreateDate.Value.ToString("yyyy-MM-dd HH:mm:ss")
                            }).ToList();
string data =JsonConvert.SerializeObject(formatData);

这里大家可以看到,对于数据库中对时间字段的设计时,不可为空和可为空的情况都有体现,对于需要显示成什么样的格式,可以在ToString()中自行定义。这里就不在多说了,不会自己去上网搜索,资料很多~~

 

关注
打赏
1665926880
查看更多评论
立即登录/注册

微信扫码登录

0.0457s