根據官方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會根據當地時區自動調整它們。
有人可以幫助我更好地理解。
因此,我從twitter4j獲得的所有內容都已報告給我的時區或utc-0? – LuigiDB
可能在您的時區,但這取決於您的配置。在我的情況是我的時區(-3 UTC)。你可以搜索一些關鍵字,並用自己最近的推文檢查它 – FeanDoe
我運行一些測試搜索jap作爲一種語言與流api和搜索api和時間戳在這兩種情況下都轉換在我的本地時間戳。現在感謝你,這種行爲很明顯。如果圖書館進行所有時區轉換,搜索推文的方式就會更加簡單。非常感謝 – LuigiDB