我有一个日期选择器,需要一些日期来阻止。我需要从数据库中获取日期。下面的脚本工作正常。
var disabledDates = ["2017-11-28", "2017-11-14", "2017-11-21"];
$(function () {
$('.dtpkr').datepicker(
{dateFormat: 'dd/mm/yy',
appendText: '(dd/mm/yy)',
showOn: 'both',
beforeShowDay: function (date) {
var string = jQuery.datepicker.formatDate('yy-mm-dd', date)
return [disabledDates.indexOf(string) == -1]
}
});
})
我使用以下代码从数据库中提取日期。
string date_query = "select display_date from X where display_type='static'";
DataTable dt = objDUT.GetDataTable(date_query);
ArrayList arrayList = new ArrayList();
for (int i = 0; i <= dt.Rows.Count - 1; i++)
{
arrayList.Add(dt.Rows[i][0].ToString());
}
Newtonsoft.Json.JsonSerializer jsr = new Newtonsoft.Json.JsonSerializer();
System.IO.StringWriter sw = new System.IO.StringWriter();
Newtonsoft.Json.JsonTextWriter jtw = new Newtonsoft.Json.JsonTextWriter(sw);
jsr.Serialize(jtw, arrayList);
string jsArrayJSON = sw.ToString();
我收到日期
12/12/2012 12:00:00 AM
12/12/2012 12:00:00 AM
但我想要["2017-11-28", "2017-11-14", "2017-11-21"]
如何实现这一目标?
答案 0 :(得分:0)
您的for
循环是个问题。它明确地将您DataTable
中的日期或日期时间字段转换为字符串。
相反,显式将其转换为DateTime
,然后使用string.Format()
或字符串插值将其转换为正确格式的字符串。
的String.format():
for (int i = 0; i <= dt.Rows.Count - 1; i++)
{
arrayList.Add(string.Format("{0:MM/dd/yyyy}", Convert.DateTime(dt.Rows[i][0]));
}
字符串插值:
for (int i = 0; i <= dt.Rows.Count - 1; i++)
{
arrayList.Add("{Convert.DateTime(dt.Rows[i][0]):MM/dd/yyyy}");
}