2015-07-25 2 views
0

Ошибка, возникающая, когда dateString является следующим, но работал раньше в другое время, не уверен, почему он не работает сейчас.C# Строка не была признана действительной DateTime

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); 

Edited Код: Ошибка генерируется либо из двух последних строк, иногда первый DateTime будет выполняться, но не второй. Окно подсказки просто запрашивает, во-первых, самую раннюю дату и время: 24 июля 2015 г. 6:26:15 AM PDT. А потом еще подсказка для последней DateTime, которая: 24 июля 2015 4:03:51 PM 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); 

Edited снова: Я хотел бы поставить быстрый код диалогового окна, так как это может быть проблемой.

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 : ""; 
    } 
} 
+0

Можете ли вы просто ** Convert.ToDateTime (datestring) ** – code

+0

Ваш код отлично работает. –

+0

Какая ошибка? Добавили ли вы 'using System.Globalization' – devilfish17

ответ

0

Ваш код работал на моей машине без ошибок. Попробуйте выполнить его на другом компьютере или в другом решении. Если это работает, значит, ваше решение должно быть чистым и готовым. Если не работают означает, что вы вы, вероятно, отсутствуют необходимые ссылки -

using System; 
using System.Globalization; 
+0

Получил это! Я отредактирую свой вопрос, чтобы опубликовать код, который не работает, который я пытался воссоздать с помощью более простого кода. –

0

Распространенная ошибка с датой разборе использует dd вместо d. С dd, значение 24 пройдет, но 9 не будет; последнее должно было бы быть 09 вместо этого. Однако, если вы используете один d, тогда будут разрешены 9, 09 и 24.