9

我完全被这个难住了。据我所见,我读过的 SO 上的文档和其他帖子说这应该可行。我一定错过了一些愚蠢的东西,但我就是看不到它。

我收到 FormatException 消息“字符串未被识别为有效日期时间”。在以下代码行:

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

我最初的意图是格式ddd, dd/MMM/yyyy,但这也不起作用(该实例中的值是Tue, 30/Apr/2013

我还尝试通过传入new CultureInfo("en-GB")而不是null

我还将代码提取到它自己的控制台应用程序中,以查看环境是否有不同(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();
        }
    }
}

这仍然给了我同样的错误。

4

2 回答 2

12

这行得通吗

 string myDate = "30-12-1899 07:50:00:AM";
DateTime dt1 = DateTime.ParseExact(myDate, "dd-MM-yyyy hh:mm:ss:tt", 
                                           CultureInfo.InvariantCulture)
于 2013-04-09T11:19:48.933 回答
7
string myDate = "30-12-1899 07:50:00:AM";
DateTime dt1 = DateTime.ParseExact(myDate, "dd-MM-yyyy HH:mm:ss:tt",  
                                           CultureInfo.InvariantCulture);

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

例如,如果文化是 de-DE,则格式“dd/MM/yyyy”将期望句点作为分隔符 (31.01.2011)。

于 2016-07-18T13:39:09.033 回答