【问题标题】:Populate listbox with the next 30 dates from current date使用当前日期之后的 30 个日期填充列表框
【发布时间】:2018-02-20 18:01:16
【问题描述】:

我正在尝试从今天到接下来的 30 天填充我的列表框。我当前的代码从当月填充我的文本框。如何只获取今天的日期值,直到接下来的 30 天。

int year = 2018;
int month = 2;

DateTime date = new DateTime(year, month, 1);
//DateTime Today = DateTime.Today;
//DateTime expiryDate = Today.AddDays(30);
do
{

    date = date.AddDays(1);
    var dateonly = date.ToShortDateString();
    listBox1.Items.Add(dateonly);
}
while (date.Month == month);

【问题讨论】:

  • 我认为你应该在问这种问题之前先看看循环的基础知识。

标签: c# visual-studio-2015


【解决方案1】:

所以您知道限制(这里是 30 天)。那么为什么不使用计数器呢?

DateTime currentDate = DateTime.Now;
for (int dayCount = 1; dayCount <= 30; dayCount++)
{
   var date = currentDate.AddDays(dayCount);
    var dateonly = date.ToShortDateString();
    listBox1.Items.Add(dateonly);
}

如果你想在列表中包含当前日期,for 循环应该是 for (int dayCount = 0; dayCount &lt; 30; dayCount++)

【讨论】:

  • 感谢您的回答
【解决方案2】:

你可以使用 Enumerable.Range:

    DateTime date = new DateTime(year, month, 1);
    Enumerable.Range(0, 30).ToList().ForEach(day => listBox1.Items.Add(date.AddDays(day).ToShortDateString()));

【讨论】:

  • Enumerable.Range(1, 30).... 为什么使用OfType&lt;int&gt; Enumerable.Range 的返回值已经是IEnumerable&lt;int&gt; 了?
  • Enumerable.Range(0,30) 返回 0 到 29 之间的 30 个值。
  • 因为我需要 ForEach,它只适用于 List。
  • OP 想要为循环中的每个值添加 1 天,持续 30 天。 0 - 29 不正确是吗?是的,ForEach 仅在调用 ToList 后可用,但您不需要 OfType!
猜你喜欢
  • 1970-01-01
  • 2014-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多