C# dates will be the end of me.

In a WebAPI, I need to parse some dates sent from a device in the following format: 
**1944-12-12T00:00:00.000+10:30**

My goal is to parse it so that I have the correct date i.e. 12/12/1944. It keeps flicking it back to 11/12/1944. So, obviously subtracting the offset. But I don't get why. Midnight on 12 Dec 1944 is a point in time. Why can't it just be parsed so you end up with a Datetime that reflects that.

Anyhow, here's some code which I attempted to use:

```
class Program
{
    private static string AppFormatForParsing = "yyyy-MM-ddTHH:mm:ss.fffzzz"; // e.g. "2018-03-29T09:52:46.544+10:30"

    static void Main(string[] args)
    {
        string aDate = "1944-12-12T00:00:00.000+11:00";

        DateTime? d = TryParseExactDateTime(aDate)?.ToLocalTime();

        Console.ReadLine();
    }

    public static DateTime? TryParseExactDateTime(string source)
    {
        if (DateTime.TryParseExact(source, AppFormatForParsing, CultureInfo.InvariantCulture, DateTimeStyles.None, out var parsedDate))
        {
            return new DateTime(parsedDate.Ticks, DateTimeKind.Utc);
        }

        return null;
    }
}

```

That, at least, gets me the right day. But an examination of the DateTime shows a value in the hour property of 9. But it is midnight!

If anyone knows how I can just parse midnight as midnight, it would be much appreciated.