如何获得Twitter服务器时间?

时间:2010-02-05 19:49:04

标签: twitter tweetsharp

所以我正在尝试使用tweet sharp为twitter关键词构建一个实时监控工具。我使用搜索API每10-15秒收集一次查询。当我拨打电话时,我只想收集自上次更新后出现的推文。

var twitter = FluentTwitter.CreateRequest().AuthenticateAs("username", "password").Search().Query().Containing("key word").Take(1000);
var response = twitter.Request();

currentResponseDateTime= Convert.ToDateTime(response.ResponseDate);

var messages = from m in response.AsSearchResult().Statuses
               where m.CreatedDate > lastUpdateDateTime
               select m;

lastUpdateDateTime = currentResponseDateTime;

我的问题是Twitter服务器时间与客户端时间相差几秒钟。我环顾四周并尝试获取日期时间,我收到Response.ResponseDate属性的响应,但看起来这是根据本地计算机时间设置的。 I.e currentResponseDateTime比Twitter Server时间提前几秒。所以我最终没有收集一些推文。

有谁知道如何从twitter搜索或REST API获取当前服务器时间?

由于

2 个答案:

答案 0 :(得分:4)

我不确定如何获得Twitter服务的本地服务器时间,但您可以采取的一种方法是存储“lastUpdateDateTime”字段中显示的最新Twitter更新的日期。这样,无论Twitter服务器的偏移量如何,您都可以保证获得自上次查看以来的所有消息。

        var twitter = FluentTwitter.CreateRequest().AuthenticateAs("username", "password").Search().Query().Containing("key word").Take(1000);
        var response = twitter.Request();

        currentResponseDateTime= Convert.ToDateTime(response.ResponseDate);

        var messages = from m in response.AsSearchResult().Statuses
                       where m.CreatedDate > lastUpdateDateTime
                       select m;

        lastUpdateDateTime = messages.Select(m => m.CreatedDate).Max();

答案 1 :(得分:0)

另一种方法(以及推荐的方法)是从他们的API服务器的响应中提取Date标题,这提供了Twitter在GMT中的时间概念。这假设您可以访问服务器响应标头,这取决于您用于访问API的方法。

例如,点击https://api.twitter.com/1/help/test.json

$ lynx --dump --head https://api.twitter.com/1/help/test.json
HTTP/1.0 200 OK
Date: Tue, 22 Jan 2013 13:30:36 GMT
...

参考:dev.twitter.com支持网站上的how to get the twitter server time (synchronize)?

引用Taylor Singletary

  

Twitter“认为”它的当前时间是在您对API调用的每个响应的“Date”HTTP标头中返回的。您还可以向GET help / test发出一个简单的HTTP HEAD请求,以将标题作为您应用的初始同步步骤。