我有一个字符串:
string date = "Sun, 17 Mar 2013 12:40:23 +0000";
我试图将其转换为日期类型,但当我尝试进行转换时,我一直收到“格式不正确”的错误提示。
DateTime dt = Convert.ToDateTime(date);
接下来尝试将其转换为以下格式:
dt.ToString("dd")
dt.ToString("MMMM")
dt.ToString("yyyy")
我有一个字符串:
string date = "Sun, 17 Mar 2013 12:40:23 +0000";
我试图将其转换为日期类型,但当我尝试进行转换时,我一直收到“格式不正确”的错误提示。
DateTime dt = Convert.ToDateTime(date);
接下来尝试将其转换为以下格式:
dt.ToString("dd")
dt.ToString("MMMM")
dt.ToString("yyyy")
var date = "Sun, 17 Mar 2013 12:40:23 +0000";
var dt = DateTime.ParseExact(date, "ddd, dd MMM yyyy hh:mm:ss zzz", CultureInfo.InvariantCulture);
Console.WriteLine(dt.ToString("dd"));
Console.WriteLine(dt.ToString("MMMM"));
Console.WriteLine(dt.ToString("yyyy"));
输出:
17
March
2013
尝试使用DateTime.Parse替代。
var dt = DateTime.Parse(date);
我还建议使用DateTime.TryParse解析日期,以确保日期始终是有效格式。
DateTime result;
if (DateTime.TryParse(date, out result))
{
Console.WriteLine(result.ToString("dd"));
Console.WriteLine(result.ToString("MMMM"));
Console.WriteLine(result.ToString("yyyy"));
}
else
{
Console.WriteLine("Error parsing date.");
}
DateTime.Parse(date, new CultureInfo("en-US")); // Specific culture
DateTime.Parse(date, CultureInfo.InvariantCulture); // Culture-insensitive
// Culture-insensitive TryParse
if (DateTime.TryParse(date, out result, CultureInfo.InvariantCulture))
{...}
DateTime.TryParse()
或者 DateTime.Parse()
。CultureInfo.InvariantCulture
的 DateTime.Parse
,它会忽略当前文化设置,从而避免可能出现的本地化问题。DateTime dt = DateTime.Parse(date, CultureInfo.InvariantCulture);
CultureInfo.InvariantCulture
类似于英语文化,并与您的字符串一起使用。
DateTime.Parse()
方法;string date = "Sun, 17 Mar 2013 12:40:23 +0000";
DateTime dt = DateTime.Parse(date, CultureInfo.InvariantCulture);
Console.WriteLine(dt.ToString("dd"));
Console.WriteLine(dt.ToString("MMMM"));
Console.WriteLine(dt.ToString("yyyy"));
输出将是:
17
March
2013
DEMO
。Convert.ToDateTime
这部分不太好,也不必要,而且相当令人困惑。 - JamiecParseExact
或TryParse
(或者,你知道的,将它们结合起来- TryParseExact
)并坚持使用它。不要两者都用,这只会让人感到困惑。 - JamiecDateTime.Parse
,而是在TryParse
中添加CultureInfo.InvariantCulture
?除了可能使用一些额外的CPU周期之外,它没有任何作用,并且可能触发不需要的FormatException
。 - eandersson你是否查看了DateTime.TryParse方法?如果向下滚动,你会发现最后一个示例实际上是“Fri, 15 May 2009 20:10:57 GMT”,与你的请求相似。
公共字符串日期转换(string da) { 字符串 sDate = da; sDate = sDate.Replace("-", "/"); sDate = sDate.Replace(".", "/"); }
string format = "dd/MM/yyyy";
DateTime dDate;
if (DateTime.TryParse(sDate, out dDate))
{
//if (DateTime.TryParseExact(sDate, format, CultureInfo.InvariantCulture, DateTimeStyles.None, out dDate))
//{
sDate = dDate.ToString("MM/dd/yyyy");
sDate = sDate.Replace("-", "/");
sDate = sDate.Replace(".", "/");
}
return sDate;
}
好的..如果你需要以数字格式返回结果,可以尝试如下所示
string date = "Sun, 17 Mar 2013 12:40:23 +0000";
DateTime dt = Convert.ToDateTime(date);
var day = dt.Day;
var month = dt.Month;
var year = dt.Year;
var time = dt.ToShortTimeString();
var hour = dt.Hour;
var minute = dt.Minute;
var second = dt.Second;
变量将返回精确的数字形式。 注意:小时将以24小时制表示。