C# 反序列化JSON时间MVC
我试图从Ajax请求dateType json获取时间。 我得到的结果是:C# 反序列化JSON时间MVC,c#,asp.net,json,asp.net-mvc,asp.net-mvc-4,C#,Asp.net,Json,Asp.net Mvc,Asp.net Mvc 4,我试图从Ajax请求dateType json获取时间。 我得到的结果是: /DATE(1436688000000)/ 这是我的密码: 视图: <div class="col-sm-8"> @Html.DropDownListFor(model => model[i].MovieShowTime.Single().MovieID, SelectMovieID, "Select Movie", new { id = "MovieName", name =
/DATE(1436688000000)/
这是我的密码:
视图:
<div class="col-sm-8">
@Html.DropDownListFor(model => model[i].MovieShowTime.Single().MovieID, SelectMovieID, "Select Movie", new { id = "MovieName", name = "MovieName" })
@Html.DropDownListFor(x => x[i].MovieShowTimeID, Enumerable.Empty<SelectListItem>(), "--Loading Value--", new { id = "ShowTime", name = "ShowTime" })
@Html.ValidationMessageFor(model=>model[i].MovieShowTimeID)
</div>
ajax:
$(function () {
$('#MovieName').change(function () {
$.ajax({
type: "POST",
url: '@Url.Action("GetShowTime", "TimeScreening")',
data: { MovieID: $('#MovieName').val() },
dataType : 'json',
success: function (data) {
$('#ShowTime').html('');
//alert(ChangeDateFormat("\/Date(1319266795390+0800)\/"));
$.each(data, function (id, option) {
var name = ChangeDateFormat(option.name)
$('#ShowTime').append($('<option></option>').val(option.id).html(option.name));
});
},
error: function (xhr, ajaxOptions, thrownEror) {
alert("False" + xhr +"..."+ ajaxOptions +"... "+ thrownEror);
}
});
});
});
$(函数(){
$('#MovieName')。更改(函数(){
$.ajax({
类型:“POST”,
url:'@url.Action(“GetShowTime”、“TimeScreening”),
数据:{MovieID:$('#MovieName').val()},
数据类型:“json”,
成功:功能(数据){
$('#ShowTime').html('');
//警报(ChangeDateFormat(“\/日期(1319266795390+0800)\/”);
$.each(数据、函数(id、选项){
var name=ChangeDateFormat(option.name)
$('#ShowTime').append($(''.val(option.id).html(option.name));
});
},
错误:函数(xhr、ajaxOptions、ThrownError){
警报(“假”+xhr+“…”+ajaxOptions+“…”+ThrownError);
}
});
});
});
我看到了关于将json格式转换为C#datetime的问题,但没有一个解决了这个问题。
以下是这篇文章:
这是我的秘密答案,但这是过时的
代码:
函数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日期=新日期(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();
返回日期。getFullYear()+“-”+月+“-”+当前日期;
}
答案是:真的没有难看的解析,但这给了我一个datetime.now和no close-to-time
这个答案是一样的
这篇文章很好,但都一样
所以。。我需要做什么 我有这组函数
// START Datetime Converters
function DateConverter(date) {
var aux = null;
if (date != null) {
aux = date.substring(6);
aux = aux.substring(0, aux.indexOf(')'));
}
return aux != null ? getISODate(new Date(parseInt(aux))) : "";
}
function DatetimeConverter(date) {
var aux = null;
if (date != null) {
aux = date.substring(6);
aux = aux.substring(0, aux.indexOf(')'));
}
return aux != null ? getISODateTime(new Date(parseInt(aux))) : "";
}
function getISODate(d) {
// padding function
var s = function (a, b) { return (1e15 + a + "").slice(-b) };
// default date parameter
if (typeof d === 'undefined') {
d = new Date();
};
// return ISO datetime
return zeroPad(d.getDate(), 2) + '/' +
zeroPad(s(d.getMonth() + 1, 2), 2) + '/' +
zeroPad(d.getFullYear(), 4);
}
function getISODateTime(d) {
// padding function
var s = function (a, b) { return (1e15 + a + "").slice(-b) };
// default date parameter
if (typeof d === 'undefined') {
d = new Date();
};
// return ISO datetime
return zeroPad(d.getDate(), 2) + '/' +
zeroPad(s(d.getMonth() + 1, 2), 2) + '/' +
zeroPad(d.getFullYear(), 4) + " " +
zeroPad(d.getHours(), 2) + ":" +
zeroPad(d.getMinutes(), 2) + ":" +
zeroPad(d.getSeconds(), 2);
}
function zeroPad(num, places) {
var zero = places - num.toString().length + 1;
return Array(+(zero > 0 && zero)).join("0") + num;
}
// END Datetime Converters
示例:在我显示CreatedDate的表中:
{
"mRender": function (oAux, oType, oData) {
return DateConverter(oData.CreatedDate);
},
},
如果需要日期和时间,只需使用DatetimeConverter
我在做什么
在函数DateConverter
和DateTimeConverter
中,我捕捉到了没有日期的数字。。。比如“143668000000”
然后在getISODate
的第一行中:
var s = function (a, b) { return (1e15 + a + "").slice(-b) };
是一个填充函数。第2天将变为“02”,如果您这样使用:
s(d.getDate(), 2)
如果操作返回的日期为空或无效:
if (typeof d === 'undefined') {
d = new Date();
};
另一个填充函数是zeroPad
,它执行函数s()所做的操作,但不删除左边的数字,例如:
var a = 3000;
var sA = s(3000, 2);
var zpA = zeroPad(3000, 2);
sA
将变为“00”,而zpA
将保持“3000”
PS:我不记得为什么我使用了
s函数
。。。我想我在创建zeroPad
/DATE(143668000000)/
不是有效的json字符串后忘记了删除它。它甚至不接近于有效的json…他打印的东西…:这里的所有代码@莱安德罗·苏亚雷斯回答。谢谢你工作完美!你能简单地解释一下你在这里做什么吗?
if (typeof d === 'undefined') {
d = new Date();
};
var a = 3000;
var sA = s(3000, 2);
var zpA = zeroPad(3000, 2);