【问题标题】:Reformatting the date in a file on file load在文件加载时重新格式化文件中的日期
【发布时间】:2015-10-04 11:31:04
【问题描述】:

我是 C# 新手,已经与这个挑战作斗争了一段时间,但我遇到了难题。

问题很简单。我将以下文件加载到 MS SQL 中:

| |500  |RUBBISH_DEFAULT_COLOR_A         |BOB           |24.09.2010|31.12.9999|       |24.09.2010|10:19:42  |               0 |        |        |
| |500  |RUBBISH_DEFAULT_COLOR_A         |MARIE         |02.06.2008|31.12.9999|       |02.06.2008|01:53:04  |               0 |        |        |
| |500  |RUBBISH_DEFAULT_COLOR_B         |JOHN          |30.12.2009|31.12.9999|       |30.12.2009|17:54:27  |               0 |        |        |
| |500  |RUBBISH_DEFAULT_COLOR_C         |RICK          |02.06.2008|31.12.9999|       |02.06.2008|01:53:04  |               0 |        |        |

我想做的是创建一个字符串阅读器来获取日期列并将它们从 02.06.2008 重新组织到 2008.06.02 。对最简单最快的方法有什么想法吗?

被修改的原始文件有几千行......

感谢您的帮助,

约翰

【问题讨论】:

  • 您可以发布您目前拥有的示例代码吗? SO更适用于代码的具体问题,而不是关于字符串解析器之类的一般指导......谷歌可能更有用。您是否已经设置了字符串解析器?

标签: c# string date


【解决方案1】:

首先你应该以任何你喜欢的方式打开文件,我使用using 块作为System.IO.StreamReader 对象。我的文件位于桌面上,所以我使用Environment 类创建路径,当然您可以替换文件的简单路径。 然后用while 块从头到尾读取文件。对于每一行,我将字符串拆分为字符串数组,并将日期列转换为DateTime 并重新转换为字符串,您将转换格式并隐式检查日期(它会抛出System.FormatString

    using (System.IO.StreamReader sr = new System.IO.StreamReader(System.Environment.GetFolderPath(System.Environment.SpecialFolder.Desktop) + "\\sample.txt"))
        {
            while (sr.EndOfStream == false)
            {
                string line = sr.ReadLine();
                string[] columns = line.Split('|');

                try
                {
                    //0 1 2     3                                4              5          6          7       8          9          10                11       12       13
                    // | |500  |RUBBISH_DEFAULT_COLOR_A         |BOB           |24.09.2010|31.12.9999|       |24.09.2010|10:19:42  |               0 |        |        |
                    columns[5] = System.Convert.ToDateTime(columns[5]).ToString("yyyy.MM.dd");
                    columns[6] = System.Convert.ToDateTime(columns[6]).ToString("yyyy.MM.dd");
                    columns[8] = System.Convert.ToDateTime(columns[8]).ToString("yyyy.MM.dd");
                    columns[9] = System.Convert.ToDateTime(columns[9]).ToString("yyyy.MM.dd");
                    //any changes can be done to string array before submitting to DB
                }
                catch (FormatException ex)
                {
                    // Do something in case of incoorect format.
                    MessageBox.Show(ex.Message);
                }
                MessageBox.Show(string.Format("columns[5]:{0}, columns[6]:{1}", columns[5], columns[6]));
            }

        }

【讨论】:

    猜你喜欢
    • 2017-02-25
    • 2018-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    • 2016-05-26
    相关资源
    最近更新 更多