Сделайте выбор с нажатым ALT - выбирает квадрат текста вместо целых строк.
Parse
принимает во внимание региональные настройки (культуру текущего потока). Поэтому я бы использовал ParseExact
и явно указал правильный формат с инвариантной культурой (или культурой, которая вам нужна, например en-US
для AM / PM).
Анализ строк в объекте DateTime
почти всегда вызывает затруднения. Если вы точно знаете, что у них всегда будет формат, как в ваших примерах, это должно сработать:
string input = "26/10/2009 8:00:41 AM";
DateTime dateTime = DateTime.ParseExact(input, "dd/MM/yyyy h:mm:ss tt", CultureInfo.InvariantCulture);
Вы, вероятно, используете неправильную культуру. Месяц не может быть 26, поэтому это не метка времени США. Однако это работает:
using System;
using System.Globalization;
class Program
{
static void Main(string[] args)
{
DateTime dateTime = DateTime.Parse("26/10/2009 8:47:39 AM",
CultureInfo.GetCultureInfo("en-GB"));
}
}
Изменилась ли культура на машине? 26.10.2009 - хорошее свидание в Великобритании, но плохое для США (например)
Либо вызовите DateTime.Parse () с культурой в качестве параметра, либо вызовите DateTime.ParseExact () с датой, точным форматом даты для синтаксического анализа и культурой:
Я второй @Lucero, Parse
использует информацию о культуре текущего потока и т. Д. См. Также противоположное направление: a ToString
вопрос в этом контексте.