我有这个字符串:
string date = "Sun, 17 Mar 2013 12:40:23 +0000";
尝试转换为日期类型,但在尝试转换时,我仍然遇到格式错误。
DateTime dt = Convert.ToDateTime(date);
然后尝试将其纳入以下格式:
dt.ToString("dd")
dt.ToString("MMMM")
dt.ToString("yyyy")
答案 0 :(得分:7)
您可以使用DateTime.ParseExact进行转换。
请尝试以下代码:
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
答案 1 :(得分:3)
尝试DateTime.TryParse()
或DateTime.Parse()
答案 2 :(得分:3)
请尝试使用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.");
}
如果您仍遇到问题,可能需要使用CultureInfo提供DateTime。这允许您指定解析器使用的确切文化,以确保计算机区域设置不会导致任何问题。
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使用操作系统设置的区域性。
答案 3 :(得分:2)
您可以将DateTime.Parse
与CultureInfo.InvariantCulture
一起使用,忽略您当前的文化,从而避免可能的本地化问题。
DateTime dt = DateTime.Parse(date, CultureInfo.InvariantCulture);
CultureInfo.InvariantCulture
类似于英国文化,可以使用你的字符串。
答案 4 :(得分:1)
您检查过DateTime.TryParse方法吗?如果向下滚动,您会注意到最后一个样本实际上是“2009年5月15日星期五20:10:57 GMT”,类似于您的请求。
答案 5 :(得分:1)
您可以使用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
。
答案 6 :(得分:0)
嗯..如果您需要数字格式的结果,请尝试如下所示
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小时格式
答案 7 :(得分:0)
public string dateConvertion(string da) { string 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;
}