返回要使用 Ajax 下拉列表的日期时间列表

本文关键字:日期 时间 列表 下拉列表 Ajax 返回 | 更新日期: 2023-09-27 18:31:10

我有一个下拉列表,我需要用从 ajax 调用传递的日期时间值填充它。 填充的值如下所示:"/date1234847269/",而不是实际日期。我只需要将日期传递到下拉列表中。我不需要从控制器返回的日期时间值中的时间戳。

我不确定jQuery在处理c#日期时间值而不是字符串方面是否存在问题。 任何帮助将不胜感激。 谢谢

我的观点:

<select id="ddlDate" class="form-control bold">
    <option value='0'>--Select Date--</option>
</select>

我的阿贾克斯电话:

function loadDateDDL(historicalIsChecked, monthlyIsChecked) {
    $.ajax({
        type: 'POST',
        url: '@Url.Action("GetGroupReportDates")',
        dataType: 'json',
        data: { isMonthly: monthlyIsChecked },
        success: function (returnData) {
            convertDate(returnData);
            $("#ddlDate").empty();
            $("#ddlDate").append("<option value='0'>--Select Date--</option>");
                            $.each(returnData, function (value, key) {
                                $("#ddlDate").append($("<option></option>")
                                                    .attr("value", value).text(key));
                            });
            //alert(returnData);
        },
        error: function (ex) {
            alert('Failed to retrieve dates.' + ex);
        }
    });
}
function convertDate(returnData) 
    {
        var date = new Date(returnData);
        return date;
    }

我的控制器:

public JsonResult GetGroupReportDates ( Boolean isMonthly )
{
    List<DateTime> reportDates = RealmsModel.RealmsAuditDataInterface ( ).GetGroupQueryRptDates ( isMonthly );
    return new JsonResult ( )
    {
        Data = reportDates,
        MaxJsonLength = Int32.MaxValue
    };
}

更新 1/21/2016:

我现在将我的 json 数据"returnData"传递给下面的 javascript 函数,并根据另一个堆栈帖子对其进行转换: 如何格式化Microsoft JSON 日期?

function convertDate(returnData) 
    {
        var date = new Date(returnData);
        return date;
    }

这现在给了我错误" date = Invalid Date {}, returnData = ["/Date(1451628000000)/"] "。 我觉得我越来越近了。 任何帮助,不胜感激。

返回要使用 Ajax 下拉列表的日期时间列表

我用以下内容解决了这个问题:

function convertDate(returnData) 
{
    var pattern = /Date'(([^)]+)')/;
    var results = pattern.exec(returnData);
    var dt = new Date(parseFloat(results[1]));
    return (dt.getMonth() + 1) + "/" + dt.getDate() + "/" + dt.getFullYear();
}

您看到的格式是旧的"Microsoft"格式日期方式。有两种方法可以绕过它。

一种方法是使用 JSON.Net 序列化器而不是内置的 JavaScriptSerializer ,因为它(自 4.5 版以来)格式化日期以便可以自动解析它们。

另一种(更快)的方法是简单地从当前格式的日期中提取数字,并将它们传递给新的 javascript Date对象。

function toDate(value) {
  return new Date(parseInt(/Date'(([^)]+)')/.exec(value)[1], 10));
}