c# - 使用 string.Insert 使用 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
的是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"));
}
这为您提供了更清晰的代码和更清晰的意图,而不是计算字符串索引和插入单个字符。
推荐阅读
- excel - 如何在条件格式中合并 Excel 数组公式?
- binary-tree - Leetcode:二叉树中序遍历问题:超出内存限制
- javascript - 如何对数组进行排序,首先是哪个最常见的元素?
- python - 如何在自定义 CDN 服务器上静态部署 python 轮子包?
- git - 为什么 GitLab 自上次合并以来没有提交到目标分支时会说存在冲突?
- javascript - 参数为字母时如何使用更好的滚动元素
- nginx - 让它让 nginx 总是有使用 https 的站点
- ios - 使用 Alamofire 在 Swift 4 中解析 Youtube api
- ios - 这些按钮是圆形的还是结节的?
- vba - 如何在VBA中将数组中的值移动n个单位