Reputation: 305
I have the below string which I need to parse to a DateTime:
Thu Aug 14 2014 00:00:00 GMT 0100 (GMT Summer Time)
I am unsure what format to supply to my DateTime.ParseExact
to achieve this. The nearest I could find in standard date/time format string was Full date/time pattern (long time) as below but this does not work
DateTime.ParseExact("Thu Aug 14 2014 00:00:00 GMT 0100 (GMT Summer Time)", "F", CultureInfo.InvariantCulture); // FormatException
Any ideas?
Upvotes: 2
Views: 1562
Reputation: 1502066
If the offset is not important, I suggest you just truncate the string after the time.
It looks like the format should allow that by finding the first space after position 16 (the start of the time in your example; part way through the time if the day number is shorter):
int endOfTime = text.IndexOf(' ', 16);
if (endOfTime == -1)
{
throw new FormatException("Unexpected date/time format");
}
text = text.Substring(0, endOfTime);
DateTime dateTime = DateTime.ParseExact(text, "ddd MMM d yyyy HH:mm:ss",
CultureInfo.InvariantCulture);
(I'm assuming the month and day names are always in English.)
Upvotes: 3
Reputation: 8669
If you are certain it will always be GMT summer time, couldn´t you use this:
var str = "Mon Jan 05 1987 07:45:30 GMT+0000 (GMT Summer Time)";
var f = "ddd MMM dd yyyy hh:mm:ss 'GMT'K' (GMT Summer Time)'";
var dateTime = DateTime.ParseExact(str, f, CultureInfo.InvariantCulture);
Or if summer/winter can change but always GMT, regardless of offset.
var str = "Mon Jan 05 1987 07:45:30 GMT+0000 (GMT Summer Time)".Split('(')[0].Trim();
var f = "ddd MMM dd yyyy hh:mm:ss 'GMT'K";
var dateTime = DateTime.ParseExact(str, f, CultureInfo.InvariantCulture);
Upvotes: 0