 <p>To start with, I'd suggest using <a href="http://msdn.microsoft.com/en-us/library/system.datetime.parseexact.aspx" rel="nofollow"><code>DateTime.ParseExact</code></a> or <code>TryParseExact</code> - it's not clear to me whether your sample is meant to be December 2nd or February 12th. Specifying the format may well remove your <code>FormatException</code>.</p> <p>The next problem is working out which time zone you want to convert it with - are you saying that 11:58 is a <em>local</em> time in some time zone, or it's <em>already</em> a UTC time?</p> <ul> <li>If it's a local time in the time zone of the code which is running this, you can use <code>DateTimeStyles.AssumeLocal | DateTimeStyles.AdjustToUniversal</code> to do it as part of parsing.</li> <li>If it's already a universal time, use <code>DateTimeStyles.AssumeUniversal</code></li> <li>If it's a local time in a different time zone, you'll need to use <a href="http://msdn.microsoft.com/en-us/library/system.timezoneinfo.aspx" rel="nofollow"><code>TimeZoneInfo</code></a> to perform the conversion.</li> </ul> <p>Also, if it's a local time you'll need to consider two corner cases (assuming you're using a time zone which observes daylight saving time):</p> <ul> <li>A local time may be <em>skipped</em> due to DST transitions, when the clocks go forward. So if the clocks skip from 1am to 2am, then 1:30am doesn't exist at all.</li> <li>A local time may be <em>ambiguous</em> due to DST transitions, when the clocks go back. So if the clocks go back from 2am to 1am, then 1:30am occurs <em>twice</em> at different UTC times - which occurrence are you interested in?</li> </ul> <p>You should decide how you want to handle these cases, and make sure they're covered in your unit tests.</p> <p>Another option is to use my date and time library, <a href="http://noda-time.googlecode.com" rel="nofollow">Noda Time</a>, which separates the concepts of "local date/time" and "date/time in a particular time zone" (and others) more explicitly.</p>