如何将日期字符串从PC上的文本文件解析为DateTime

时间:2015-01-01 20:00:44

标签: c# parsing datetime text-files datetime-parsing

  

--- --- EDITED

我有一个简单的C#Windows窗体。 “c:\ date.txt”只是(DateTime.Now)。稍后我会创建一些代码来更新这个文件,但是现在,我遇到了调试问题。它构建良好,但调试在date.txt文件中抛出异常...代码如下:

public partial class Form1 : Form
{
    private void timer1_Tick(object sender, EventArgs e)
    {
        DateTime dt = DateTime.Parse(@"C:\date.txt"); // Exception Thrown Here
                      // Should be: (File.ReadAllText(@"C:\date.txt"))
        DateTime dn = DateTime.Now;
        TimeSpan dc = (dn - dt);
        label1.Text = ("Days = " + dc.Days + 
                    "\nHours = " + dc.Hours +
                    "\nMins = " + dc.Minutes +
                    "\nSecs = " + dc.Seconds);
    }
}

FormatException未处理...字符串未被识别为有效的DateTime。从索引0开始有一个未知单词。“将字符串转换为DateTime时,解析字符串以在将每个变量放入DateTime对象之前获取日期。”

我正在解析!我试过了(新的StreamReader ... ToString())。我试过Convert.ToDateTime(...)。我试过把它变成一种方法......我试过TryParse。什么都没有帮助。 我需要做些什么才能让这个东西从文件中读取字符串?

3 个答案:

答案 0 :(得分:3)

如果文件只包含一行包含日期的行,则可以执行以下操作:

DateTime dt = DateTime.Parse(File.ReadAllText(@"C:\date.txt"));

答案 1 :(得分:1)

当然,您正在尝试解析字符串" C:\ date.txt"到DateTime。你最好试试这个:

System.IO.StreamReader file = new System.IO.StreamReader(@"c:\date.txt");
string txt = file.ReadLine();
DateTime dt = DateTime.Parse(txt);
file.Close();

答案 2 :(得分:0)

谢谢大家。这些都是很好的答案。 是 - DateTime.Parse正在寻找解析"字符串"而不是文件或文件.ToString()......

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();

        if (!File.Exists(@"C:\tmp\date.txt"))
        {
            File.WriteAllText(@"C:\tmp\date.txt", DateTime.Now.ToString());
        }
    }

    private void timer1_Tick(object sender, EventArgs e)
    {
        DateTime dn = DateTime.Now;
        DateTime dt = DateTime.Parse(File.ReadAllText(@"C:\tmp\date.txt"));
                          // Read the Text ^      From the File ^
        TimeSpan dc = dn - dt;
        label1.Text = "Now: " + dn.ToString() +
                    "\nThen: " + dt.ToString() +
                    "\nDifference..." +
                    "\nDays: " + dc.Days.ToString() +
                    "\nHours: " + dc.Hours.ToString() +
                    "\nMins: " + dc.Minutes.ToString() +
                    "\nSecs: " + dc.Seconds.ToString();
    }
}

这是日期/时间计数器的一部分,从上次工作时发生的事件开始计算。许多人停下来询问有关显示器的问题以及引发计数器最后一次重置的问题。