C#String未被识别为有效的DateTime

时间:2015-07-25 04:51:29

标签: c# parsing datetime

dateString如下所示但在较早时间工作不同时会引发错误,不知道为什么它现在不起作用。

 string dateString = "Jul 24, 2015 4:03:51 PM PDT";
            string format = "MMM dd, yyyy h:mm:ss tt PDT";
            CultureInfo provider = CultureInfo.InvariantCulture;
            DateTime time = DateTime.ParseExact(dateString, format, provider);
            Console.WriteLine(time);

编辑代码:最后两行引发错误,有时第一个DateTime将执行但不会执行第二个。提示窗口首先要求的是,最早的日期和时间是:2015年7月24日太平洋夏令时间上午6:26:15。然后另一个提示最新的DateTime是:2015年7月24日下午4:03:51 PDT

string afterpromptvalue = Prompt.ShowDialog("Enter earliest Date and Time", "Unshipped Orders");
            string beforepromptvalue = Prompt.ShowDialog("Enter latest Date and Time", "Unshipped Orders");

            string format = "MMM dd, yyyy h:mm:ss tt PDT";
            CultureInfo provider = CultureInfo.InvariantCulture;

            DateTime createdAfter = DateTime.ParseExact(afterpromptvalue, format, provider);
            DateTime createdBefore = DateTime.ParseExact(beforepromptvalue, format, provider);

再次编辑:我想提示提示对话框代码,因为这可能是问题。

public static class Prompt
{
    public static string ShowDialog(string text, string caption)
    {
        Form prompt = new Form();
        prompt.Width = 500;
        prompt.Height = 150;
        prompt.FormBorderStyle = FormBorderStyle.FixedDialog;
        prompt.Text = caption;
        prompt.StartPosition = FormStartPosition.CenterScreen;
        Label textLabel = new Label() { Left = 50, Top=20, Text=text };
        TextBox textBox = new TextBox() { Left = 50, Top=50, Width=400 };
        Button confirmation = new Button() { Text = "Ok", Left=350, Width=100, Top=70, DialogResult = DialogResult.OK };
        confirmation.Click += (sender, e) => { prompt.Close(); };
        prompt.Controls.Add(textBox);
        prompt.Controls.Add(confirmation);
        prompt.Controls.Add(textLabel);
        prompt.AcceptButton = confirmation;

        return prompt.ShowDialog() == DialogResult.OK ? textBox.Text : "";
    }
}

2 个答案:

答案 0 :(得分:0)

您的代码在我的计算机上运行没有任何错误。尝试在其他机器上或在不同的解决方案中执行它。如果它工作意味着您的解决方案需要清洁和构建。如果不工作意味着您可能缺少必需的参考 -

using System;
using System.Globalization;

答案 1 :(得分:0)

日期解析的常见错误是使用dd而不是d。使用dd时,24的值将会通过,但9将不会;后者必须是09。但是,如果您使用单个d,则90924都将被允许。