我有一个下拉列表,我需要填写从ajax调用传递的日期时间值。填充的值如下所示:“/ date1234847269 /”而不是实际日期。我只需要将日期传递到下拉列表中。我不需要也是从控制器返回的日期时间值的时间戳。
我不确定jQuery是否存在处理c#datetime值而不是字符串的问题。任何帮助,将不胜感激。感谢
我的观点:
<select id="ddlDate" class="form-control bold">
<option value='0'>--Select Date--</option>
</select>
我的Ajax电话:
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
};
}
2016年1月21日更新:
我现在将我的json数据“returnData”传递给下面的javascript函数,并根据另一个堆栈帖子进行转换:How do I format a Microsoft JSON date?
function convertDate(returnData)
{
var date = new Date(returnData);
return date;
}
这现在给我错误“date = Invalid Date {}, returnData = ["/Date(1451628000000)/"]
”。我觉得我越来越近了。任何帮助表示赞赏。
答案 0 :(得分:0)
您看到的格式是旧的&#34; microsoft&#34;格式化日期的方式。有两种方法可以解决它。
一种方法是使用JSON.Net序列化程序而不是内置JavaScriptSerializer
,因为它(自4.5版本)格式化日期,以便可以自动解析它们。
另一种(更快)的方法就是从日期中提取数字,将其传递给新的javascript Date
对象。
function toDate(value) {
return new Date(parseInt(/Date\(([^)]+)\)/.exec(value)[1], 10));
}
答案 1 :(得分:0)
我通过以下方式解决了这个问题:
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();
}