Разобрать дату из экспорта лотоса - PullRequest
0 голосов
/ 07 мая 2019

В приложении на C # мне нужно проанализировать xml-файл, который является экспортом базы данных Lotus Notes.

Экспорт содержит даты в этом формате:

<noteinfo noteid='6706' unid='6B6A3ADD41061773C12580F2004E8EB3' sequence='6'>
    <created>
        <datetime dst='true'>20170329T161803,39+02</datetime>
    </created>
    <modified>
        <datetime>20171108T100439,39+01</datetime>
    </modified>
    <revised>
        <datetime>20171108T100439,38+01</datetime>
    </revised>
    <lastaccessed>
        <datetime>20171108T100439,38+01</datetime>
    </lastaccessed>
    <addedtofile>
        <datetime dst='true'>20170329T163711,21+02</datetime>
    </addedtofile>
</noteinfo>

Я должен извлечь эти даты в значение .Net Datetime.

Однако я не понимаю, что это за формат. Попытка разобрать дату не удалась:

var created = DateTime.Parse("20170329T161803,39+02");

Выдает

Строка не была распознана как действительный DateTime

Как разобрать этот формат даты?

Первая часть даты перед запятой очевидна. Вторая часть меньше. +02 вероятно соответствует часовому поясу GMT + 02, но я не получаю 39

PS: я не могу контролировать экспорт

Ответы [ 2 ]

2 голосов
/ 07 мая 2019

Предполагая, ,39 это миллисекунды

var created = DateTime.ParseExact("20170329T161803,38+02", "yyyyMMddTHHmmss,ffz", CultureInfo.InvariantCulture);

Ссылка: DateTime.ParseExact

1 голос
/ 07 мая 2019

Попробуйте

var created = DateTime.ParseExact("20170329T161803,39+02".Remove(15), "yyyyMMdd'T'HHmmss",CultureInfo.InvariantCulture);

Я не уверен, что такое ,39+02 с точки зрения часового пояса, возможно? Я обрезал его, но если вы можете описать, что это может быть, это может быть проанализировано

Edit:

Предполагая, что это миллисекунды и часовой пояс:

var created = DateTime.ParseExact("20170329T161803,39+02", "yyyyMMdd'T'HHmmss','ffz",CultureInfo.InvariantCulture);
...