2016-09-21 126 views
1

根據官方twitter api page https://dev.twitter.com/overview/api/tweets),每條推文的「created_at」時間戳根據「創建此推文時的UTC時間」進行編譯。twitter4j和twitter時間戳處理

其中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」: 「星期三8月27日13時08分45秒+0000 2008」

+0000是偏移量和Twitter4j只需要這個輸入並創建一個Date Java變量。這意味着控制檯上顯示的時間取決於您的配置和系統。

+0

因此,我從twitter4j獲得的所有內容都已報告給我的時區或utc-0? – LuigiDB

+0

可能在您的時區,但這取決於您的配置。在我的情況是我的時區(-3 UTC)。你可以搜索一些關鍵字,並用自己最近的推文檢查它 – FeanDoe

+1

我運行一些測試搜索jap作爲一種語言與流api和搜索api和時間戳在這兩種情況下都轉換在我的本地時間戳。現在感謝你,這種行爲很明顯。如果圖書館進行所有時區轉換,搜索推文的方式就會更加簡單。非常感謝 – LuigiDB