当我尝试从DateTime格式的字符串(“ mm / dd / yyyy hh:mm:ss xx” )并将其分配给List
/ ArrayList
。
for(int i = 0; i < elementCounter; i++)
{
String stringDate = Convert.ToString(DatumPocetka[i]);
DPGodina[i] = stringDate.Substring(stringDate.Length - 16, 4);
}
DatumPocetka是一个ArrayList,其字符串类型值为我前面提到的DateTime格式。
我必须从字符串的后面计算起始字符。从头算起,我不知道年份从哪里开始,因为天和月可以是个位数和个位数。由于字符串的时间部分保持静态,因此从背面进行计算更容易。 (“ mm / dd / yyyy hh:mm:ss xx ” )这部分字符串始终包含16个字符,因此这就是我将长度减去16的原因
甚至Visual Studio都说stringDate.Length等于21,但是我仍然在DPGodina[i] = stringDate.Substring(stringDate.Length - 16, 4);
行上看到ArgumentOutOfRangeException。
我尝试使用 name.Year.ToString(); 使用List << em> DateTime >进行此操作,但这也不起作用。
答案 0 :(得分:2)
此代码:
for(int i = 0; i < elementCounter; i++)
{
String stringDate = Convert.ToString(DatumPocetka[i]);
DPGodina[i] = stringDate.Substring(stringDate.Length - 16, 4);
}
可以替换为:
var DPGodina = DatumPocetka.Select(z => z.Year.ToString()).ToList();
如果您想完全删除循环。这也将避免担心字符串解析和循环/列表索引问题。
您还需要删除现有的DPGodina
变量声明。