c# - 意外的参数OutOfRangeException
问题描述
当我尝试从 DateTime 格式 ( "mm/dd/yyyy hh:mm:ss xx" ) 的字符串中提取一年并将其分配给List
/时,我收到 System.ArgumentOutOfRangeException 错误消息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,但我仍然得到 ArgumentOutOfRangeException 就DPGodina[i] = stringDate.Substring(stringDate.Length - 16, 4);
行了。
我尝试使用name.Year.ToString();对 List< DateTime >执行此操作;但这也不起作用。
解决方案
这段代码:
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
变量声明。
推荐阅读
- hadoop - 在 Windows 上安装 Hive
- python - 基于临时变量的变量更新
- python - 让函数返回 true 或 false bool
- google-apps-script - 无法将 GlyphType 设置为编号 Google 文档
- ios - 一台设备上的 iOS Cognito 错误 13 但在另一台设备上成功
- c# - 如何将实体传递给 MediatR(我尝试时遇到问题)
- javascript - 如何在 Spring Boot 中使用 Spring Security 配置 CORS?
- javascript - 在 url 和 session 中获取具有变量 id 的帖子
- wxpython - 拖动期间无法使用 wxPython 正确绘制矩形
- c++ - 将 LPVOID 更改为 const u8*