首页新闻找找看学习计划

从数据库查询dateTime页面显示为 /Date(13526..)

0
悬赏园豆:100 [已解决问题] 解决于 2015-08-14 10:12

用MVC架构写的   model层内容

页面显示是这样的

该在哪个位置、怎么写日期的转换?

玩世不恭的雷寅的主页 玩世不恭的雷寅 | 初学一级 | 园豆:38
提问于:2014-03-25 14:19
< >
分享
最佳答案
0

日期时间显示为"/Date(12345678+8000)/"形式,这其中的数字12345678的意义其实是指所指的时间与1970年1月1日0时0分0秒(世界协调时)的时间间隔的毫秒数,+8000是指时区。

你可以参照下面这篇文章的做法:
http://blog.csdn.net/cncdns/article/details/6164389

至于在哪改,你找到将对象序列化为JSON格式的字符串的地方,参照链接文章中的办法用正则表达式替换。
文章中转换后的格式为"yyyy-MM-dd HH:mm:ss",如果你是用AJAX方式展现内容,也可以将日期时间格式"/Date(12345678+8000)/"替换成new Date(12345678)形式,注意没有了引号,这样在浏览器端能自动实例化为JavaScript Date 对象。

如果你的Controler返回的是JsonResult,你可以参照下面这篇文章的方法四做法:
http://www.cnblogs.com/best/p/3537030.html

你也可以在浏览器端做转换,下面提供一个转换日期时间格式的javascript函数:

function parseDateTime(dateTimeStr){
    var patt = new RegExp("/Date\\((\\d+)(?:\\+\\d{1,4})?\\)/");
    var groups = patt.exec(dateTimeStr);
    var milliseconds = parseInt(groups[1]);
    return new Date(milliseconds);
}
收获园豆:100
客家岸田 | 菜鸟二级 |园豆:404 | 2014-03-25 16:32
其他回答(7)
0

数据类型问题,你可以用string类型来保存时间。我在用ajax返回json时,也是这种。

单恋 | 园豆:678 (小虾三级) | 2014-03-25 14:28

 如果用string类型在selectAll方法里还要改成DateTime类型

支持(0) 反对(0) 玩世不恭的雷寅 | 园豆:38 (初学一级) | 2014-03-25 14:55

@玩世不恭的雷寅: 我是这样做的。我在model里多添加一个string类型的属性。直接把时间类型的转换给它保存。楼下给的方法没试过。你试一下,看看行不行啊

支持(0) 反对(0) 单恋 | 园豆:678 (小虾三级) | 2014-03-25 15:08

@单恋: 恩  好的  谢谢啦

支持(0) 反对(0) 玩世不恭的雷寅 | 园豆:38 (初学一级) | 2014-03-25 15:23
0

 在列表中用TimeFormatter(val, "ymdhms");转换一下

cenlo | 园豆:583 (小虾三级) | 2014-03-25 14:36

你是说在页面JS写吗?

支持(1) 反对(0) 玩世不恭的雷寅 | 园豆:38 (初学一级) | 2014-03-25 14:54

@玩世不恭的雷寅: 是的

支持(0) 反对(0) cenlo | 园豆:583 (小虾三级) | 2014-03-25 15:00
0

如果是在SelectAll方法中转换日期,那就要修改 LeaveModel 的 StartTime 属性为 String 类型。

如果是在页面上转换日期,那么你需要在JS中执行转换,你需要用到http://momentjs.com/这个东西。

飞扬的尘埃 | 园豆:1318 (小虾三级) | 2014-03-25 14:42

数据库里是datetime类型的  如果在LeaveModel写成String类型的话  在selectAll方法里还要转换成DateTime类型

支持(0) 反对(0) 玩世不恭的雷寅 | 园豆:38 (初学一级) | 2014-03-25 14:54

@玩世不恭的雷寅: 首先,你要搞清楚, 你的LeaveModel是业务模型,还是视图模型。

如果是用作页面显示内容的视图模型,那么日期属性完全可以设为string类型,selectAll方法中就可以将数据库中的日期读取出来转为string类型存入LeaveModel。

如果是用作业务模型,那么你只能到页面上,使用JS来转为string日期,具体要看你页面使用的JS库是那种。一般的JS库都可以结合使用momentjs这个工具来转换日期。

支持(0) 反对(0) 飞扬的尘埃 | 园豆:1318 (小虾三级) | 2014-03-25 15:19

@飞扬的尘埃: 恩   我明白你的意思啦   谢谢

支持(0) 反对(0) 玩世不恭的雷寅 | 园豆:38 (初学一级) | 2014-03-25 15:23
0

//将json格式的时间转换成一般时间
        function ChangeDateFormat(jsondate) {
            jsondate = jsondate.replace("/Date(", "").replace(")/", "");
            if (jsondate.indexOf("+") > 0) {
                jsondate = jsondate.substring(0, jsondate.indexOf("+"));
            } else if (jsondate.indexOf("-") > 0) {
                jsondate = jsondate.substring(0, jsondate.indexOf("-"));
            }
            var date = new Date(parseInt(jsondate, 10));
            var month = date.getMonth() + 1 < 10 ? "0" + (date.getMonth() + 1) : date.getMonth() + 1;
            var currentDate = date.getDate() < 10 ? "0" + date.getDate() : date.getDate();
            return date.getFullYear() + "-" + month + "-" + currentDate;
        }

wolfy | 园豆:2636 (老鸟四级) | 2014-03-26 13:08
0

你这是easyui吧.需要在页面弄个格式化函数。。

还有一种办法是,你在绑定之前先把格式转换掉:

public ContentResult JsonDate(object data)
        {
            var timeConverter = new IsoDateTimeConverter { DateTimeFormat = "yyyy-MM-dd HH:mm:ss" };
            return Content(JsonConvert.SerializeObject(data, Formatting.Indented, timeConverter));
        }

Alex_QY1987 | 园豆:1888 (小虾三级) | 2014-03-27 17:09
0

DateTime x=DateTime.Now;

x.ToLocalTime();

hexllo | 园豆:405 (菜鸟二级) | 2014-03-27 17:19
0

我一条语句能满足你。

月明时勤 | 园豆:746 (小虾三级) | 2014-03-28 13:30
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册