我试图让我的网站输出一年中所有月份的列表,但我遇到了一个我无法弄清楚的瓶颈。出于某种原因,10月在列表中出现两次,4月甚至没有出现,这样(名字是丹麦语,但你可以理解它):
目前我通过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/>";
}
答案 0 :(得分:2)
问题是填充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月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}}到1
格式字符串中没有特殊含义。
为什么这个循环使用9
呢?要构建1到12之间的数字列表,只需致电DateTime.Now.Month
:
Måneder.Add(t)
您也可以完全删除列表:
for (int t = 1; t <= 12; t++)
{
Måneder.Add(t);
}
答案 1 :(得分:1)
+运算符执行整数加法和字符串连接。你的问题可能是它做错了。
试试这个:
foreach (int l in Måneder)
{
DateTime bleh = DateTime.Now.AddMonths(l);
string blah = (bleh.ToString("MMMM"));
Literal4.Text += blah + l.ToString() + "<br/>";
}