在asp.net中使用datepicker中的数据库日期c#

时间:2017-11-02 19:19:52

标签: javascript c# jquery asp.net datepicker

我有一个日期选择器,需要一些日期来阻止。我需要从数据库中获取日期。下面的脚本工作正常。

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"]

这样的日期

如何实现这一目标?

1 个答案:

答案 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}");
}