当尝试在DateTime类上使用Parse方法时,我会抛出异常:
字符串未被识别为有效的DateTime。
"26/10/2009 8:47:39 AM"
。其他字符串的示例:
26/10/2009 8:47:39 AM 26/10/2009 8:00:41 AM 26/10/2009 7:48:35 AM
奇怪的是,我确信它在>__<
答案 0 :(得分:24)
将字符串解析为DateTime
对象几乎总是一种痛苦。如果您确定他们将始终拥有您的示例所做的格式,那么这应该有效:
string input = "26/10/2009 8:00:41 AM";
DateTime dateTime = DateTime.ParseExact(input, "dd/MM/yyyy h:mm:ss tt", CultureInfo.InvariantCulture);
答案 1 :(得分:11)
Parse
考虑了区域设置(当前线程的文化)。因此,我使用ParseExact
并使用不变文化(或您需要的文化,例如。en-US
,明确指定正确的格式,用于AM / PM)。
答案 2 :(得分:3)
你可能正在使用错误的文化。这个月不能是26,所以这不是美国的时间戳。这虽然有效:
using System;
using System.Globalization;
class Program
{
static void Main(string[] args)
{
DateTime dateTime = DateTime.Parse("26/10/2009 8:47:39 AM",
CultureInfo.GetCultureInfo("en-GB"));
}
}
答案 3 :(得分:2)
机器上的文化有变化吗? 26/10/2009是一个很好的英国约会,但美国约会不好(例如)
答案 4 :(得分:2)
使用culture作为参数调用DateTime.Parse()或使用日期,要解析的日期的确切格式以及文化调用DateTime.ParseExact():
答案 5 :(得分:1)
我是第二个@Lucero,Parse
使用当前主题的文化信息等。另请参阅相反的方向:在此上下文中ToString
question。
答案 6 :(得分:0)
我必须解决来自其他系统的一些非常奇怪的日期格式...在此示例中,该格式适用于SPANISH格式...
string input="07/06/2019 07:01:54 p. m.";
public static DateTime ParseSpanishDate(string input)
{
string normalized = input.Replace("a. m.", "AM").Replace("p. m.", "PM");
normalized = normalized.Replace("12:00:00 AM", "00:00:00 AM");
return DateTime.Parse(normalized, CultureInfo.GetCultureInfo("es"));
}