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

背景:前段时间在用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<View_Expend> lstViews = newList<View_Expend>();
//添加需要的数据到lstViews中
…….
……
string data =JsonConvert.SerializeObject(lstViews, dtConverter);

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

 

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

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

具体实现就直接代码了

var lstData = newList<View_Expend>();
//添加需要的数据到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()中自行定义。这里就不在多说了,不会自己去上网搜索,资料很多~~

 

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值