将字符串唯一日期输出转换为c#中的日期时间类型

时间:2013-08-19 10:25:05

标签: c# datetime

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

6 个答案:

答案 0 :(得分:1)

您可以使用DateTime.ParseExact

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

答案 1 :(得分:1)

您应该阅读DateTime custom formats

这应该解决你的问题

 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
}

答案 2 :(得分:1)

使用DateTime.ParseExact或(如果输入可能无效)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());
}

Custom Date and Time Format Strings,尤其是"zzz" Custom Format Specifier

答案 3 :(得分:0)

将字符串解析为datetime:

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

答案 4 :(得分:0)

有几种方法......

DateTime.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);

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

答案 5 :(得分: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); 完全相同,并且您想完全忽略它,请使用:

{{1}}