C# 使用String.Insert使用ForEach循环格式化日期字符串
我正在将这些字符串更改为yyyy mm ddhh:mm:ss格式 我将字符串放入一个数组中,将其输入到一个四个循环中,在该循环中,我使用Insert()函数在适当的位置添加“-”和“:”,但它仍在打印原始字符串C# 使用String.Insert使用ForEach循环格式化日期字符串,c#,foreach,C#,Foreach,我正在将这些字符串更改为yyyy mm ddhh:mm:ss格式 我将字符串放入一个数组中,将其输入到一个四个循环中,在该循环中,我使用Insert()函数在适当的位置添加“-”和“:”,但它仍在打印原始字符串 static void Main(string[] args) { string[] dates = { "20190127144251", "20190127123315", "20190127035942" }; foreach (
static void Main(string[] args)
{
string[] dates = { "20190127144251", "20190127123315", "20190127035942" };
foreach (string i in dates)
{
string str = i;
str.Insert(3, "-");
str.Insert(5, "-");
str.Insert(7, "-");
str.Insert(9, ":");
str.Insert(11, ":");
Console.WriteLine(i);
}
}
}
首先打印出原始字符串(未格式化),您没有存储
.Insert()
调用的结果。字符串是不可变的,对它们的修改不到位,而是返回新修改的字符串。将结果放入变量中:
str = str.Insert(3, "-");
// etc.
第二,您正在输出i
intead ofstr
。输出要修改的文件:
Console.WriteLine(str);
第三,通过将字符串解析为实际的DateTime
及其输出,可以跳过所有这一切:
foreach (string i in dates)
{
var dt = DateTime.ParseExact(i, "yyyyMMddhhmmss");
Console.WriteLine(dt.ToString("yyyy-MM-dd-hh:mm:ss"));
}
这使您的代码更加清晰,目的更加明确,而不是计算字符串索引和插入单个字符。首先,您没有存储
.Insert()
调用的结果。字符串是不可变的,对它们的修改不到位,而是返回新修改的字符串。将结果放入变量中:
str = str.Insert(3, "-");
// etc.
第二,您正在输出i
intead ofstr
。输出要修改的文件:
Console.WriteLine(str);
第三,通过将字符串解析为实际的DateTime
及其输出,可以跳过所有这一切:
foreach (string i in dates)
{
var dt = DateTime.ParseExact(i, "yyyyMMddhhmmss");
Console.WriteLine(dt.ToString("yyyy-MM-dd-hh:mm:ss"));
}
这使您的代码更加清晰,目的更加明确,而不是计算字符串索引和插入单个字符。字符串是不可变的
.Insert
返回一个新字符串。您应该看看这个问题,因为它向您展示了如何使用DateTime.TryParseExact
。我建议解析为DateTime对象,然后对格式字符串使用ToString方法。字符串是不可变的.Insert
返回一个新字符串。您应该看看这个问题,因为它向您展示了如何使用DateTime.TryParseExact
。我建议解析为DateTime对象,然后对格式字符串使用ToString方法。