DateTime.ParseExact FormatException字符串未被识别为有效的DateTime

Col*_*kay 9 c# .net-4.0

我完全被这个困扰了.据我所知,文件和其他帖子我已经读过,说这应该有效.我一定是想念一些傻事,但我看不出来.

我得到一个FormatException,消息"字符串未被识别为有效的DateTime".在以下代码行:

return DateTime.ParseExact(value, DateFormat, null,
                           DateTimeStyles.AllowWhiteSpaces | DateTimeStyles.AssumeUniversal);
Run Code Online (Sandbox Code Playgroud)
  • value"11/04/2013"
  • DateFormat"dd/MM/yyyy"
  • 目前的文化是 en-GB
  • 我尝试了各种变体,DateTimeStyles但没有效果.

我原来的意图是格式,ddd, dd/MMM/yyyy但也没有用(该实例中的值是Tue, 30/Apr/2013)

我也尝试通过传入new CultureInfo("en-GB")而不是传递来强制文化到en-GBnull

我还将代码解压缩到自己的控制台应用程序中,以查看环境是否存在差异(ASP.NET MVC 3)

using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;

namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            var DateFormat = "dd/MM/yyyy";
            var value = "30/04/2013";
            var culture = new CultureInfo("en-GB");
            var result = DateTime.ParseExact(value, DateFormat, culture,
                           DateTimeStyles.AllowWhiteSpaces | DateTimeStyles.AssumeUniversal);
            Console.WriteLine("\"{0}\" as \"{1}\" ==> {2}", value, DateFormat, result);
            Console.ReadKey();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这仍然给我同样的错误.

Roh*_*hit 10

这有用吗

 string myDate = "30-12-1899 07:50:00:AM";
DateTime dt1 = DateTime.ParseExact(myDate, "dd-MM-yyyy hh:mm:ss:tt", 
                                           CultureInfo.InvariantCulture)
Run Code Online (Sandbox Code Playgroud)


小智 5

string myDate = "30-12-1899 07:50:00:AM";
DateTime dt1 = DateTime.ParseExact(myDate, "dd-MM-yyyy HH:mm:ss:tt",  
                                           CultureInfo.InvariantCulture);
Run Code Online (Sandbox Code Playgroud)

注意使用HH(24小时制)而不是hh(12小时制),以及使用InvariantCulture,因为有些文化使用除斜线之外的分隔符.

例如,如果文化是de-DE,则格式"dd/MM/yyyy"会将期间视为分隔符(31.01.2011).