.NET DateTime. Синтаксический анализ

Сделайте выбор с нажатым ALT - выбирает квадрат текста вместо целых строк.

9
задан John Saunders 8 December 2009 в 23:31
поделиться

6 ответов

Parse принимает во внимание региональные настройки (культуру текущего потока). Поэтому я бы использовал ParseExact и явно указал правильный формат с инвариантной культурой (или культурой, которая вам нужна, например en-US для AM / PM).

11
ответ дан 4 December 2019 в 06:11
поделиться

Анализ строк в объекте DateTime почти всегда вызывает затруднения. Если вы точно знаете, что у них всегда будет формат, как в ваших примерах, это должно сработать:

string input = "26/10/2009 8:00:41 AM";
DateTime dateTime = DateTime.ParseExact(input, "dd/MM/yyyy h:mm:ss tt", CultureInfo.InvariantCulture);
24
ответ дан 4 December 2019 в 06:11
поделиться

Вы, вероятно, используете неправильную культуру. Месяц не может быть 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"));
    }
}
3
ответ дан 4 December 2019 в 06:11
поделиться

Изменилась ли культура на машине? 26.10.2009 - хорошее свидание в Великобритании, но плохое для США (например)

2
ответ дан 4 December 2019 в 06:11
поделиться

Либо вызовите DateTime.Parse () с культурой в качестве параметра, либо вызовите DateTime.ParseExact () с датой, точным форматом даты для синтаксического анализа и культурой:

DateTime.ParseExact ()

2
ответ дан 4 December 2019 в 06:11
поделиться

Я второй @Lucero, Parse использует информацию о культуре текущего потока и т. Д. См. Также противоположное направление: a ToString вопрос в этом контексте.

1
ответ дан 4 December 2019 в 06:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: