这是我尝试格式化的日期时间格式。我从 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.
这有效:
DateTime.ParseExact(dtStr, "ddd MMM dd HH:mm:ss zzzz yyyy", CultureInfo.InvariantCulture)
ParseExact
并TryParseExact
允许使用自定义格式字符串。ddd
是缩写的日期名称、MMM
缩写的月份名称、dd
日期编号、HH
24 小时制时钟格式的小时、mm
分钟、ss
秒、zzzz
时区和yyyy
年份。
我曾经CultureInfo.InvariantCulture
指定不使用当前文化,但InvariantCulture
类似于"en-US"
.
有效,但在从您的代码行获取日期后,我尝试执行 date.ToString("dd/mm/yyyy") 但将字符串设为 12-12-2013,没有斜杠
/
是您当前文化的日期分隔符的替换字符,显然是-
. 因此,也可以使用CultureInfo.InvariantCulture
来指定应在不使用当前文化的情况下使用分隔符:
string result = dateTime.ToString("dd/mm/yyyy", CultureInfo.InvariantCulture);
请参阅:“/”自定义格式说明符
试试这个
DateTime.ParseExact(YourDate, "ddd MMM dd HH:mm:ss KKKK yyyy", CultureInfo.InvariantCulture)
使用不变文化比使用当前文化更好
您正在尝试转换非标准格式,因此请使用:
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);
或者为您的输入构建正确的格式。
您的日期字符串需要是这样的:
Thu Jul 18 2013 17:39:53 +0000
无论生成什么字符串,都需要在月份和日期之后和时间之前具有年份值,如上所示。
string date = "Thu Jul 18 2013 17:39:53 +0000";
var theDate = Convert.ToDateTime(date);
注意:这将产生一个有效的 .NETDateTime
对象。
更新:
如果您无法更改生成的字符串,请使用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);
怎么样;
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
在此处获取时区信息。
查看更多信息;
尝试使用 DateTime.ParseExact。
string date = "Thu Jul 18 17:39:53 +0000 2013"
DateTime date = DateTime.ParseExact(date, "dd/MM/yyyy", null);
this.Text="22/11/2009";
DateTime 日期 = DateTime.ParseExact(this.Text, "dd/MM/yyyy", null);