2016-09-21 2 views
1

Согласно официальной странице twitter api https://dev.twitter.com/overview/api/tweets) отметка времени «created_at» каждого твита компилируется в соответствии с «UTC, когда этот твит был создан».twitter4j и twitter timestamp обработка

Какой UTC?

Потому что под структурой пользователя внутри структуры tweet я нашел «utc_offset» пользователя, который создал твит (https://dev.twitter.com/overview/api/users).

Так что мой вопрос в том, могу ли я считать поле «created_at» каждого твита, независимо от используемого api, как UTC без смещения.

И просто чтобы быть уверенным, если twitter4j изменить это поведение, так как если я бегу простой тест потокового как это в Италии, где находится UTC-1

String now = new SimpleDateFormat("yyyyMMdd_HHmmss").format(Calendar.getInstance().getTime()); 
    System.out.println("test run at: " + now); 
StatusListener listener = new StatusListener(){ 
     @Override 
     public void onException(Exception ex) { 
      ex.printStackTrace(); 
     } 

     @Override 
     public void onStatus(Status status) { 
      System.out.println("@" + status.getId() + " - " + status.getCreatedAt().toString()); 
     } 

     @Override 
     public void onDeletionNotice(StatusDeletionNotice sdn) { 
     } 

     @Override 
     public void onScrubGeo(long l, long l1) { 
     } 

     @Override 
     public void onStallWarning(StallWarning sw) { 
     } 

     @Override 
     public void onTrackLimitationNotice(int i) { 
     } 
    }; 

    ConfigurationBuilder cb = new ConfigurationBuilder(); 
    cb.setDebugEnabled(true) 
     .setOAuthConsumerKey ... 


    TwitterStream twitterStream = new TwitterStreamFactory(cb.build()).getInstance(); 
    twitterStream.addListener(listener); 
    twitterStream.sample(); 

В результате я получить что-то вроде этого:

run: 
test run at: 20160921_084244 
[Wed Sep 21 08:42:44 CEST 2016]Establishing connection. 
[Wed Sep 21 08:42:46 CEST 2016]Connection established. 
[Wed Sep 21 08:42:46 CEST 2016]Receiving status stream. 
@778484603443113985 - Wed Sep 21 08:42:47 CEST 2016 
@778484603443085312 - Wed Sep 21 08:42:47 CEST 2016 
@778484603434795008 - Wed Sep 21 08:42:47 CEST 2016 
@778484603443154945 - Wed Sep 21 08:42:47 CEST 2016 
@778484603438923776 - Wed Sep 21 08:42:47 CEST 2016 
@778484603434721280 - Wed Sep 21 08:42:47 CEST 2016 

Где легко заметить, что твит не показан в стандартном UTC, кажется, что twitter4j автоматически настраивает их с местным часовым поясом.

Может кто-нибудь помочь мне в лучшем понимании.

ответ

2

С documentation результат находится в следующем формате

"created_at": "Ср авг 27 13:08:45 +0000 2008"

The +0000 это смещение и Twitter4j только принимает этот вход и создает переменную Java Date. Это означает, что время, отображаемое на консоли, зависит от вашей конфигурации и вашей системы.

+0

Итак, все, что я получил от twitter4j, уже сообщается в мой часовой пояс или utc-0? – LuigiDB

+0

Возможно, в вашем часовом поясе, но это зависит от вашей конфигурации. В моем случае мой часовой пояс (-3 UTC). Вы можете выполнить поиск по ключевому слову и проверить его с помощью недавнего твита. – FeanDoe

+1

Я запустил несколько тестовых поисковых jap как язык с потоком api, а api поиска и timestamps в обоих случаях преобразуются в мою локальную метку времени. Теперь благодаря вам это поведение ясное. Таким образом, поиск твита намного проще, если библиотека выполняет все преобразования часового пояса. большое спасибо – LuigiDB

Смежные вопросы