错误:在c#中转换为日期格式时,字符串未被识别为有效的DateTime

时间:2013-09-02 07:07:20

标签: c# asp.net date datetime

这是我正在尝试格式化的日期时间格式。我从twitter apis获取此日期格式

string date = "Thu Jul 18 17:39:53 +0000 2013"

我试过

Convert.ToDateTime(date).ToString("dd/MM/yyyy")

但它说String was not recognized as a valid DateTime.

7 个答案:

答案 0 :(得分:7)

这有效:

DateTime.ParseExact(dtStr, "ddd MMM dd HH:mm:ss zzzz yyyy", CultureInfo.InvariantCulture)

ParseExactTryParseExact允许使用custom format stringddd是缩写的日期名称,MMM缩写的月份名称,dd日期编号,HH小时,24小时制,mm分钟,{{ 1}}秒,ss time-zonezzzz年。

我已使用yyyy指定当前文化未使用,但CultureInfo.InvariantCultureInvariantCulture类似。

Demo

  

工作但是从我尝试的代码行中获取日期之后   date.ToString(“dd / mm / yyyy”)但是得到字符串为12-12-2013,没有   斜线

"en-US"是当前文化的日期分隔符的替换字符,显然是/。因此,也可以使用-指定在不使用当前文化的情况下使用分隔符:

CultureInfo.InvariantCulture

请参阅:The "/" Custom Format Specifier

答案 1 :(得分:2)

试试这个

  DateTime.ParseExact(YourDate, "ddd MMM dd HH:mm:ss KKKK yyyy", CultureInfo.InvariantCulture)

使用不变文化比使用当前文化更好

答案 2 :(得分:1)

您正在尝试转换非标准格式,因此请使用:

string dateStr = "Thu Jul 18 17:39:53 +0000 2013";
DateTime date =  DateTime.ParseExact(dateStr, "ddd MMM dd h:mm:ss KKKK yyyy", System.Globalization.CultureInfo.InvariantCulture);

或为您的输入构建正确的格式。

答案 3 :(得分:0)

您的日期字符串必须是:

Thu Jul 18 2013 17:39:53 +0000

无论是什么产生你的字符串都需要在月,日之后和时间之前得到年份值,如上所述。

string date = "Thu Jul 18 2013 17:39:53 +0000";
var theDate = Convert.ToDateTime(date);

注意:这将生成有效的.NET DateTime对象。

更新:

如果您无法更改生成的字符串,请使用自定义格式的ParseExact方法,如下所示:

string date = "Thu Jul 18 17:39:53 +0000 2013";
var theDate = DateTime.ParseExact(date, "ddd MMM dd H:mm:ss zzz yyyy", CultureInfo.InvariantCulture);

答案 4 :(得分:0)

怎么样;

string date = "Thu Jul 18 17:39:53 +0000 2013";
DateTime dt = DateTime.ParseExact(date, "ddd MMM dd HH:mm:ss KKKK yyyy", CultureInfo.InvariantCulture);
Console.WriteLine(dt);

输出将是;

18.07.2013 20:39:53

K了解此处的时区信息。

查看更多信息;

答案 5 :(得分:0)

尝试使用DateTime.ParseExact。

  string date = "Thu Jul 18 17:39:53 +0000 2013" 
  DateTime date = DateTime.ParseExact(date, "dd/MM/yyyy", null);

答案 6 :(得分:0)

this.Text =&#34 22 /2009分之11&#34 ;;

DateTime date = DateTime.ParseExact(this.Text," dd / MM / yyyy",null);