JSON数据传输之用OADate处理日期格式

前端APP 投稿 58100 0 评论

JSON数据传输之用OADate处理日期格式

JSON 最常见的用法之一,是从 web 服务器上读取 JSON 数据(作为文件或作为 HttpRequest),将 JSON 数据转换为 JavaScript 对象,然后在网页中使用该数据。

var txt = '{ "employees" : [' +      
'{ "firstName":"John" , "lastName":"Doe" },' +        
'{ "firstName":"Anna" , "lastName":"Smith" },' +       
'{ "firstName":"Peter" , "lastName":"Jones" } ]}';

由于 JSON 语法是 JavaScript 语法的子集,JavaScript 函数 eval( 可用于将 JSON 文本转换为 JavaScript 对象。

var obj = eval ("(" + txt + "";

除此之外的常用方法还有:

JSONObject json = new JSONObject(map;

2、String转换成json

JSONObject.parseObject(StringText

3、List转换成json

JSONArray json = new JSONArray(list;

4、json转换成List

list = JSONObject.parseArray(list,String.class

但其实我们在进行数据传输的时候,除了我们常见的数据如数组等格式之外,"时间"也是数据传输中的重要类型。

OADate的处理

相信有用过日期格式并进行过json数据导出的小伙伴应该不难发现,当单元格的值是一个日期时,我们导出的日期数据会被储存为OADate。

通常情况下我们使用OADate是为了解决日期序列化以及时区问题,所以我们使用这种特殊的方式保存日期。但是很多情况下我们需要对日期数据进行一些处理,但是无奈的是不知如何进行转换。

接下来我们来解决JSON日期格式数据处理问题,且针对不同编程环境都有解决方案。

function fromOADate(date {
            var oaDateReg = new RegExp('^/OADate\\(([-+]?(\\d+(\\.\\d*?|\\.\\d+([eE][-+]?\\d+?\\/\\s*

;
            if (typeof date === "string" && oaDateReg.test(date {
                var oadate = parseFloat(date.match(oaDateReg[1];
                var ms = (oadate * 86400000 * 1440 - 25569 * 86400000 * 1440 + new Date((oadate - 25569 * 86400000.getTimezoneOffset( * 86400000  / 1440;
                return new Date(ms;
            }else{
                return date;
            }
        }
sheet.tag("/OADate(44542/";
var date = sheet.tag(;
long d = 44542;
        double  mantissa = d - (long d;
        double hour = mantissa*24;
        double min =(hour - (longhour * 60;
        double sec=(min- (longmin * 60;

        SimpleDateFormat myFormat = new SimpleDateFormat("dd MM yyyy";
        Date baseDate = myFormat.parse("30 12 1899";
        Calendar c = Calendar.getInstance(;
        c.setTime(baseDate;
        c.add(Calendar.DATE,(intd;
        c.add(Calendar.HOUR,(inthour;
        c.add(Calendar.MINUTE,(intmin;
        c.add(Calendar.SECOND,(intsec;

        System.out.println(c.getTime(;
System.DateTime.FromOADate(44542

编程笔记 » JSON数据传输之用OADate处理日期格式

赞同 (94) or 分享 (0)
游客 发表我的评论   换个身份
取消评论

表情
(0)个小伙伴在吐槽