用MVC架构写的 model层内容
页面显示是这样的
该在哪个位置、怎么写日期的转换?
日期时间显示为"/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); }
数据类型问题,你可以用string类型来保存时间。我在用ajax返回json时,也是这种。
如果用string类型在selectAll方法里还要改成DateTime类型
@玩世不恭的雷寅: 我是这样做的。我在model里多添加一个string类型的属性。直接把时间类型的转换给它保存。楼下给的方法没试过。你试一下,看看行不行啊
@单恋: 恩 好的 谢谢啦
在列表中用TimeFormatter(val, "ymdhms");转换一下
你是说在页面JS写吗?
@玩世不恭的雷寅: 是的
如果是在SelectAll方法中转换日期,那就要修改 LeaveModel 的 StartTime 属性为 String 类型。
如果是在页面上转换日期,那么你需要在JS中执行转换,你需要用到http://momentjs.com/这个东西。
数据库里是datetime类型的 如果在LeaveModel写成String类型的话 在selectAll方法里还要转换成DateTime类型
@玩世不恭的雷寅: 首先,你要搞清楚, 你的LeaveModel是业务模型,还是视图模型。
如果是用作页面显示内容的视图模型,那么日期属性完全可以设为string类型,selectAll方法中就可以将数据库中的日期读取出来转为string类型存入LeaveModel。
如果是用作业务模型,那么你只能到页面上,使用JS来转为string日期,具体要看你页面使用的JS库是那种。一般的JS库都可以结合使用momentjs这个工具来转换日期。
@飞扬的尘埃: 恩 我明白你的意思啦 谢谢
//将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;
}
你这是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));
}
DateTime x=DateTime.Now;
x.ToLocalTime();
我一条语句能满足你。