Why can’t DateTime.ParseExact() parse the AM/PM in “4/4/2010 4:20:00 PM” using “M'/'d'/'yyyy H':'mm':'ss' 'tt”

前端 未结 3 2019
独厮守ぢ
独厮守ぢ 2020-11-28 12:26

I\'m using c#, and if I do

DateTime.ParseExact(\"4/4/2010 4:20:00 PM\", \"M\'/\'d\'/\'yyyy H\':\'mm\':\'ss\' \'tt\", null)

The return value

3条回答
  •  悲哀的现实
    2020-11-28 13:18

    Make the hour format (H) lowercase like this:

    DateTime.ParseExact(
                "4/4/2010 4:20:00 PM", 
                "M/d/yyyy h:mm:ss tt", 
                CultureInfo.InvariantCulture);
    

    Uppercase "H" indicates 24-hour time and lowercase "h" indicates 12-hour time and will respect the AM/PM in the candidate string.

    Side note: It is best to provide an instance of IFormatProvider to methods like this (even if it's just CultureInfo.InvariantCulture). It's one of those things that doesn't really matter until you hit problems with it so it can be good to be in the habit of specifying culture information.

提交回复
热议问题