Parse a UTC date string to date in C#

Simple question, I have this string:

string dateString = "7/12/2014 4:42:00 PM";

This is a date string and it's in the UTC timezone.

I need to convert it to a date, so I'm doing the following:

DateTimeOffset dateOffset;

DateTimeOffset.TryParse(dateString, out dateOffset);

DateTime date = dateOffset.UtcDateTime;

The problem:

When I'm parsing the string to date, the code is considering that the dateString is in the Local Timezone of the PC (+3 GMT), and not in the UTC timezone.

So I am getting the following the dateOffset = {7/12/2014 4:42:00 PM +03:00} and thus date = {7/12/2014 1:42:00 PM}

how can I tell him that the date string provided is in the UTC format and not in the local timezone format?

Thanks

Jon Skeet
people
quotationmark

how can I tell him that the date string provided is in the UTC format and not in the local timezone format?

Specify a DateTimeStyles value of AssumeUniversal in the call. That tells the parsing code what to do. For example:

// null here means the thread's current culture - adjust it accordingly.
if (DateTimeOffset.TryParse(dateString, null, DateTimeStyles.AssumeUniversal,
                            out dateOffset))
{
    // Valid
}

You should always use the result of TryParse to tell whether or not it's successfully parsed.

If you know the format and the specific culture, I'd personally use DateTimeOffset.TryParseExact. (Well, to be honest I'd use my Noda Time project to start with, but that's a different matter.)

people

See more on this question at Stackoverflow