Это действительный немецкий формат даты и времени? - PullRequest
0 голосов
/ 28 августа 2018

Так что я использую API, где дата и время извлекаются в следующем формате DIE, 28. AUG 2018 12:38:38

Ближайший формат даты и времени, который я нашел, был ddd, dd. MMM yyyy HH:mm:ss. Он работает, только если его DI, но API предоставляет этот день как DIE.

Существует ли формат, который может анализировать DIE, 28. AUG 2018 12:38:38 Я считаю, что разработчики этого API используют какой-то другой формат.

Кто-нибудь знает, что это может быть?

РЕДАКТИРОВАТЬ: какой-то код, который я пытался

static void Main(string[] args)
{
    const string DateTimeFormat = "ddd, dd. MMM yyyy HH:mm:ss";
    var deCultureInfo = new CultureInfo("de-DE");

    string input = "DIE, 28. AUG 2018 14:12:01";

    // both throws exception
    var timestamp1 = DateTime.ParseExact(input, DateTimeFormat, deCultureInfo);
    var timestamp2 = DateTime.Parse(input, deCultureInfo);


    //Console.WriteLine(DateTime.Now.ToString(deCultureInfo));

}

Ответы [ 2 ]

0 голосов
/ 28 августа 2018

Просто чтобы предложить другой вариант: Только не .

Какой бы ни была эта часть, она избыточна. 28 августа 2018 года не будет ничего другого. Информация там не имеет никакого значения для компьютера. Этот формат предназначен для людей, которые не могут просто «посмотреть» за несколько циклов ЦП.

Не разбирать input, просто разбирать input.Split(",").Last().Trim(). Этот API явно не написан экспертами или не предназначен для использования на другом компьютере (немецкий формат даты, день недели, неправильный формат для дня недели). Кажется, что это строка, которая отображается для конечных пользователей продукта. Считайте, что это может привести к нарушению изменений в любое время, это, вероятно, любой пользователь, который «нравится лучше» в определенное время.

0 голосов
/ 28 августа 2018

Вы можете переопределить ddd в свойстве AbbreviatedDayNames из используемых DateTimeFormatInfo:

const string DateTimeFormat = "ddd, dd. MMM yyyy HH:mm:ss";
var deCultureInfo = new CultureInfo("de-DE");

var input = "DIE, 28. AUG 2018 14:12:01";

CultureInfo ci = CultureInfo.CreateSpecificCulture("de-DE");
DateTimeFormatInfo dtfi = ci.DateTimeFormat;

// addjust this to your german strings
dtfi.AbbreviatedDayNames = new[] { "SON", "MON", "DIE", "MIT", "DON", "FRE", "SAM" };

var timestamp1 = DateTime.ParseExact(input, DateTimeFormat, dtfi);

См. Это из Доку.

...