我对这个完全感到难过。据我所知,文件和其他帖子我已经读过,说这应该有效。我一定是想念一些愚蠢的东西,但我看不到它。
我得到一个FormatException,消息“String未被识别为有效的DateTime”。在以下代码行中:
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();
}
}
}
这仍然给我同样的错误。
答案 0 :(得分:8)
这是否有效
string myDate = "30-12-1899 07:50:00:AM";
DateTime dt1 = DateTime.ParseExact(myDate, "dd-MM-yyyy hh:mm:ss:tt",
CultureInfo.InvariantCulture)
答案 1 :(得分:5)
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)。