-1

---已编辑---

我有一个简单的 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。没有任何帮助。我需要在这里做什么才能让这个东西从文件中读取字符串?

4

3 回答 3

3

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

DateTime dt = DateTime.Parse(File.ReadAllText(@"C:\date.txt"));
于 2015-01-01T20:06:51.703 回答
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();
于 2015-01-01T20:06:18.087 回答
0

谢谢大家。这些都是很好的答案。是 - DateTime.Parse 正在寻找解析“字符串”,而不是文件或 file.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();
    }
}

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

于 2015-01-02T20:20:08.360 回答