【问题标题】:using database dates in datepicker in asp.net c#在asp.net c#中的datepicker中使用数据库日期
【发布时间】:2018-04-15 10:28:00
【问题描述】:

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

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"]这样的日期

如何实现?

【问题讨论】:

  • 你的意思是你想让它们加入一行,用逗号分隔?或者您只是想删除时间部分?
  • 我想要这样的 ["2017-11-28", "2017-11-14", "2017-11-21"];逗号分隔符删除时间部分。谢谢

标签: javascript c# jquery asp.net datepicker


【解决方案1】:

您的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}");
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-19
    • 2013-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多