My string
representation of date time is "20181230183000000"
and I am unable to convert it to DateTime
:
DateTimeOffset.ParseExact(DOCDate, "dd.MM.yyyy HH:mm:ss.fff z", CultureInfo.InvariantCulture
My string
representation of date time is "20181230183000000"
and I am unable to convert it to DateTime
:
DateTimeOffset.ParseExact(DOCDate, "dd.MM.yyyy HH:mm:ss.fff z", CultureInfo.InvariantCulture
Well, actual format and pattern should match: your current input
20181230183000000
means
yyyyMMddHHmmssfff
which stands for year
, month
, day
, hours
, minutes
, seconds
, fractions of second
all with leading zeroes and without any separators
Code:
string DOCDate = "20181230183000000";
DateTimeOffset result = DateTimeOffset.ParseExact(
DOCDate,
"yyyyMMddHHmmssfff",
CultureInfo.InvariantCulture,
DateTimeStyles.AssumeUniversal); // Since you've mentioned 'z' in the question
Let's have a look
Console.Write(result.ToString(CultureInfo.InvariantCulture));
Outcome:
12/30/2018 18:30:00 +00:00
Similar code for DateTime
:
DateTime result = DateTime.ParseExact(
DOCDate,
"yyyyMMddHHmmssfff",
CultureInfo.InvariantCulture,
DateTimeStyles.AssumeUniversal); // Since you've mentioned 'z' in the question
Finally, if you want to represent DateTimeOffset
(DateTime
) in some format, use ToString()
method:
Console.Write(result.ToString("dd.MM.yyyy HH:mm:ss.fff' z'"));
You can try:
var dateTimeString = "20181230183000000";
DateTimeOffset dto;
if (DateTimeOffset.TryParseExact(dateTimeString, "yyyyMMddHHmmssfff",
CultureInfo.InvariantCulture,
DateTimeStyles.AssumeUniversal |
DateTimeStyles.AdjustToUniversal, out dto))
{
Console.WriteLine(dto);
}
Here is a good post on using DateTimeOffset, DateTime and not TimeZoneInfo
DateTime.Parse("2012-09-30T23:00:00.0000000Z") always converts to DateTimeKind.Local