【问题标题】:Month showing up twice in list of months月份在月份列表中出现两次
【发布时间】:2016-06-22 20:36:02
【问题描述】:

我试图让我的网站输出一年中所有月份的列表,但我遇到了一个我无法弄清楚的瓶颈。出于某种原因,十月在列表中出现了两次,而四月甚至没有出现,就像这样(名称是丹麦语,但希望你能理解):

目前,我正在通过foreach 循环完成所有月份。 Måneder 只是我之前在页面上创建的列表。似乎出于某种原因,当它达到第十个时,它以某种奇怪的方式进行添加,而不是仅仅覆盖,使其成为第 16 个而不是第 10 个:

foreach (int l in Måneder)
{
    DateTime bleh = DateTime.Now.AddMonths(l);
    string blah = (bleh.ToString("MMMM"));
    Literal4.Text += blah + l + "<br/>";
}

【问题讨论】:

  • 你确定Måneder中的值是按顺序排列的吗?
  • Måneder 中的值是通过 for 语句添加的,尽管 for (int t = 1; t &lt;= 12; t++) { int months = int.Parse(DateTime.Now.Month.ToString(t.ToString())); Måneder.Add(months); } 应该没有什么问题

标签: c# asp.net .net datetime


【解决方案1】:

问题在于填充Måneder的循环:

for (int t = 1; t <= 12; t++)
{
    int months = int.Parse(DateTime.Now.Month.ToString(t.ToString())); // <-- BUG
    Måneder.Add(months);
}

此循环获取当前月份(如果您今天运行,则为 6 月)并在该数字上调用 ToString 十二次,将循环变量 t 作为格式字符串传递:

6.ToString("1") ==> 1
6.ToString("2") ==> 2
6.ToString("3") ==> 3
6.ToString("4") ==> 4
6.ToString("5") ==> 5
6.ToString("6") ==> 6
6.ToString("7") ==> 7
6.ToString("8") ==> 8
6.ToString("9") ==> 9
6.ToString("10") ==> 16
6.ToString("11") ==> 11
6.ToString("12") ==> 12

注意6.ToString("10") 返回16。如Custom Numeric Format Strings 中所述,格式字符串中的0 实际上是一个占位符,表示正在格式化的值中的一个数字——在这种情况下该值为6。其他数字1 到格式字符串中的9 没有特殊含义。

为什么这个循环使用DateTime.Now.Month?要构建从 1 到 12 的数字列表,只需调用 Måneder.Add(t)

for (int t = 1; t <= 12; t++)
{
    Måneder.Add(t);
}

您也可以完全消除列表:

for (int t = 1; t <= 12; t++)
{
    DateTime bleh = DateTime.Now.AddMonths(t);
    string blah = (bleh.ToString("MMMM"));
    Literal4.Text += blah + t + "<br/>";
}

【讨论】:

    【解决方案2】:

    + 运算符同时进行整数加法和字符串连接。你的问题可能是它做错了。

    试试这个:

    foreach (int l in Måneder)
            {
                DateTime bleh = DateTime.Now.AddMonths(l);
                string blah = (bleh.ToString("MMMM"));
               Literal4.Text += blah +  l.ToString() + "<br/>";
    
            }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-18
      • 2015-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多