我在 TextBox 中有两个 DatePicker。我想打印文本框范围之间的所有日期。如何在数据库中插入这些多个日期...?
例子:
在第一个文本框中:- 2013 年 7 月 1 日
第二个文本框:- 2013 年 12 月 31 日
输出应该像这样:
2013 年 7 月 1 日
2013 年 7 月 2 日
2013 年 7 月 3 日
2013 年 7 月 4 日
|
|
|
2013 年 12 月 30 日
2013 年 12 月 31 日
private List<DateTime> GetRange()
{
var res = new List<DateTime>();
var start = DateTime.Parse(textBox1.Text);
var end = DateTime.Parse(textBox2.Text);
for (var date = start; date <= end; date = date.AddDays(1))
res.Add(date);
return res;
}
首先,将两个输入都转换为日期对象。你可以用DateTime.Parse()
这个。
DateTime start = DateTime.Parse("1 July 2013");
DateTime end = DateTime.Parse("31 December 2013");
然后简单地循环到最后。
while(start <= end)
{
// Output or save to DB etc
Console.WriteLine(start.ToString("d MMMMM yyyy"));
start = start.AddDays(1);
}
使用 Linq:
var date1 = DateTime.Now.AddMonths(-1);
var date2 = DateTime.Now;
var dates = Enumerable
.Range(1, (int)(date2 - date1).TotalDays)
.Select(d => date1.AddDays(d).Date);
并将结果转储到字符串:
var output = string.Join(Environment.NewLine, dates);
你为什么想做这个?
您当然可以这样做,具体取决于数据库中 varchar(max) 字段的粒度,并将字符串设置为:
string result = "";
for(int x = 0; x< (endDate - startDate).TotalDays; x++)
{
result += startDate.AddDays(x).ToDateString();
}
我无法理解你为什么想要这个的原因。存储开始和结束日期,然后在需要时使用应用程序中的逻辑来计算信息,这似乎更有意义。
List<DateTime> allDates = new List<DateTime>();
int starting = startingDate.Day;
int ending = endingDate.Day;
for (int i = starting; i <= ending; i++)
{
allDates.Add(new DateTime(startingDate.Year, startingDate.Month, i));
}
谢谢大家的回复.....
但对我来说完美的答案是以上所有答案的组合......
DateTime dt = Convert.ToDateTime(TextBox1.Text);
string result = "";
for (int x = 0; x <= (Convert.ToDateTime(TextBox2.Text) - Convert.ToDateTime(TextBox1.Text)).TotalDays; x++)
{
result = dt.AddDays(x).ToString("d MMMMM yyyy");
Response.Write("<br>" + result);
}