-1

我正在从 api 中提取数据并得到这个值"Fri Aug 16 21:06:52 +0000 2013"我想知道如何将这个字符串值更改为键入日期时间

4

6 回答 6

1

您可以使用DateTime.ParseExact

DateTime.ParseExact("Aug 16 21:06:52 +0000 2013", "MMM dd HH:mm:ss +ffff yyyy", 
System.Globalization.CultureInfo.InvariantCulture);
于 2013-08-19T10:28:38.327 回答
1

您应该阅读DateTime 自定义格式

这应该可以解决您的问题

 DateTime result = DateTime.ParseExact("Aug 16 21:06:52 +0000 2013", "MMM dd HH:mm:ss zzz yyyy", CultureInfo.InvariantCulture);

或者更恰当地做到这一点并避免异常。像这样做

//zzz is Hours and minutes offset from UTC
string[] formats = { "MMM dd HH:mm:ss zzz yyyy" }; 
DateTime result;
string date = "Aug 16 21:06:52 +0000 2013";
if (DateTime.TryParseExact(date, formats, System.Globalization.CultureInfo.InvariantCulture, DateTimeStyles.None, out result))
{
    // i prefer this method though
}
于 2013-08-19T10:31:21.543 回答
1

使用DateTime.ParseExactor (如果输入可能无效)DateTime.TryParseExact

string input = "Aug 16 21:06:52 +0000 2013";
DateTime output;
if (DateTime.TryParseExact(input, "MMM dd HH:mm:ss zzzz yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out output))
{ 
    // date was parsable, here is it:
    Console.WriteLine(output.ToLongDateString());
}

自定义日期和时间格式字符串,尤其是“zzz”自定义格式说明符

于 2013-08-19T10:32:47.710 回答
0

将字符串解析为日期时间:

http://msdn.microsoft.com/en-us/library/ch92fbc1.aspx DateTime.TryParse() 返回 true 或 false 表示成功/失败。 http://msdn.microsoft.com/en-us/library/1k1skd40.aspx DateTime.Parse() 在失败时抛出异常。

于 2013-08-19T10:28:32.113 回答
0

在您更新问题后进行编辑。

如果要将其转换为本地时区,请使用:

var dateTime = DateTime.ParseExact("Fri Aug 16 21:06:52 +0000 2013",
  "ddd MMM dd HH:mm:ss zzz yyyy",
  CultureInfo.InvariantCulture);

否则,使用:

var dateTime = DateTime.ParseExact("Fri Aug 16 21:06:52 +0000 2013",
  "ddd MMM dd HH:mm:ss zzz yyyy",
  CultureInfo.InvariantCulture,
  DateTimeStyles.AdjustToUniversal);

如果输入+0000中总是这样,并且您想完全忽略它,请使用:

var dateTime = DateTime.ParseExact("Fri Aug 16 21:06:52 +0000 2013",
  "ddd MMM dd HH:mm:ss +0000 yyyy",
  CultureInfo.InvariantCulture);
于 2013-08-19T10:38:02.633 回答
0

有几种方法...

日期时间.TryParse

DateTime dt;
if (DateTime.TryParse("Aug 16 21:06:52 +0000 2013", out dt))
{
     //parsing was successfull
}

如果解析失败,这不会引发异常。

然后是DateTime.Parse:

DateTime dt = DateTime.Parse("Aug 16 21:06:52 +0000 2013");

与 不同TryParse的是,如果解析失败,这将引发异常。

还有,Convert.ToDateTime:

DateTime dt = Convert.ToDateTime("Aug 16 21:06:52 +0000 2013", culture);

如果转换失败,这也会引发错误。

于 2013-08-19T10:31:16.243 回答