JSON日期从tweeter到C#格式

时间:2013-02-19 16:43:54

标签: c# json json.net date-format

如何格式化从twitter获得的JSON日期到C#DateTime? 这是我收到的日期格式:

"Tue, 19 Feb 2013 13:06:17 +0000"

我可以使用JSON.NET吗?

5 个答案:

答案 0 :(得分:16)

使用DateTime.ParseExact

解决

- > http://blog.kevinyu.org/2012/07/handling-json-in-net.html

链接更新:关联的博客帖子处于离线状态。缓存副本仍然可以引用via the Way Back Machine Internet Archive

从博客文章复制的常见.NET代码是:

public const string Const_TwitterDateTemplate = "ddd MMM dd HH:mm:ss +ffff yyyy";

DateTime createdAt = DateTime.ParseExact((string)jo["created_at"], 
Const_TwitterDateTemplate, new System.Globalization.CultureInfo("en-US"));

,其中

  • 变量jo是一个表示created_at日期属性的JSON对象,但实际上Twitter日期字符串会进入此参数

答案 1 :(得分:10)

来自流程回答的部分代码。

attribute

答案 2 :(得分:4)

上面使用ffff格式说明符的答案似乎返回了正确的结果,但从技术上讲这是错误的。 ffff是千分之一秒的格式说明符,Twitter日期的+0000表示与UTC的小时和分钟偏移量。请参阅以下格式:

string twitterTime = "Wed Feb 22 15:49:01 +0000 2017";
string twitterTimeformat = "ddd MMM dd HH:mm:ss zzz yyyy";

DateTime dateTime = DateTime.ParseExact(twitterTime, twitterTimeformat,
    CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal);
Console.WriteLine(dateTime);

结果:2/22/2017 3:49:01 PM

如果需要,您可以编辑DateTimeStyles枚举以返回本地时间而不是UTC。

Custom Date and Time Format Strings

DateTimeStyles Enumeration

答案 3 :(得分:1)

它是DateTimeOffset而不是DateTime。以下应该有效。

DateTimeOffset parsed = DateTimeOffset.Parse("Tue, 19 Feb 2013 13:06:17 +0000");

答案 4 :(得分:0)

我需要这些答案的PowerShell变体,以下内容对我有用。

PS> $Created_At = 'Fri Jun 05 18:15:48 +0000 2020'
PS> [datetime]::ParseExact($Created_At,'ddd MMM dd HH:mm:ss zzz yyyy',(Get-Culture))

Friday, June 5, 2020 1:15:48 PM