Steve B
Steve B

Reputation: 37660

Parse a date from an export of a lotus notes base

In a C# application, I have to parse an xml file which is an export of a lotus notes database.

The exports contains dates in this format :

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

I have to extract these dates into a .Net Datetime value.

However, I don't get what's this format. Trying to parse the date fails:

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

Throws

String was not recognized as a valid DateTime

How to parse this date format ?

The first part of the date, before the comma, is obvious. The second part is less. +02 probably match the GMT+02 timezone, but I don't get the 39

PS: I don't have control on the exports

Upvotes: 0

Views: 124

Answers (2)

Caius Jard
Caius Jard

Reputation: 74605

Try

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

I'm not sure what the ,39+02 is in terms of a time - zone perhaps? I trimmed it off, but if you can describe what it is maybe it can be parsed

Edit:

Assuming that's milliseconds and timezone:

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

Upvotes: 1

Nik.
Nik.

Reputation: 96

Assuming ,39 are the milliseconds

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

Reference: DateTime.ParseExact

Upvotes: 2

Related Questions