Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 反序列化JSON时间MVC_C#_Asp.net_Json_Asp.net Mvc_Asp.net Mvc 4 - Fatal编程技术网

C# 反序列化JSON时间MVC

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 =

我试图从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 = "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);