将字符串转换为日期时间dd / MM / yyyy hh:mm:ss tt

时间:2015-07-03 11:54:07

标签: c# datetime

如何将此7/3/2015 12:40:02 PM转换为格式为"dd/MM/yyyy hh:mm:ss tt"的DateTime,我这样做了:

BreackEndTime = DateTime.ParseExact(configViewModel.EndPause, "dd/MM/yyyy hh:mm:ss tt", CultureInfo.InvariantCulture);

但我总是得到

  

字符串未被识别为有效的DateTime。

enter code here

3 个答案:

答案 0 :(得分:14)

由于数月和数天可以使用一位数

BreackEndTime = DateTime.ParseExact(configViewModel.EndPause, "d/M/yyyy hh:mm:ss tt", CultureInfo.InvariantCulture);

The "M" Custom Format Specifier(示范,[{3}}的作品类似)

  

" M"自定义格式说明符将月份表示为来自的数字   1到12(对于有13个月的日历,从1到13)。   格式化一位数的月份没有前导零。

<强>更新

由于小时也可以使用一个数字:

DateTime.ParseExact("7/3/2015 1:52:16 PM", "d/M/yyyy h:mm:ss tt", CultureInfo.InvariantCulture);` 

...所以"d/M/yyyy h:mm:ss tt"代替"d/M/yyyy hh:mm:ss tt"。请注意,同样适用于分钟和秒,如果它们也可以使用"d/M/yyyy h:m:s tt"。我希望你现在明白了。

答案 1 :(得分:2)

如果您的7/3/2015 12:40:02 PM是字符串,则需要使用单个数字格式说明符M specifierd specifier;

BreackEndTime = DateTime.ParseExact(configViewModel.EndPause,
                                    "M/d/yyyy hh:mm:ss tt", 
                                    CultureInfo.InvariantCulture);

答案 2 :(得分:0)

这是在我的案例中运作良好的代码:

        Console.WriteLine("deal with regex datetime: ");
        string input = "11/24 5:41:00 AM";
        DateTime newDate;
        CultureInfo enUS = new CultureInfo("en-US");
        try
        {
            newDate = DateTime.ParseExact(input, "M/d h:mm:ss tt", CultureInfo.InvariantCulture);
            Console.WriteLine("parse result: " + newDate);
        }
        catch (Exception err)
        {
            Console.WriteLine("error parsing input string. date format is wrong or string chaged " + err);
        }