Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用String.Insert使用ForEach循环格式化日期字符串_C#_Foreach - Fatal编程技术网

C# 使用String.Insert使用ForEach循环格式化日期字符串

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 (

我正在将这些字符串更改为yyyy mm ddhh:mm:ss格式

我将字符串放入一个数组中,将其输入到一个四个循环中,在该循环中,我使用Insert()函数在适当的位置添加“-”和“:”,但它仍在打印原始字符串

    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 of
str
。输出要修改的文件:

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 of
str
。输出要修改的文件:

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方法。