Twitter を解析しています。Twitter が投稿されてからの経過時間を表示したいと考えています。しかし、正しく計算されていないようです。Stackoverflow の別の投稿から数式を取得し、そこから return ステートメントを作成しようとしました。
public static String getTwitterDate(Date date){
long milliseconds = date.getTime();
int minutes = (int) ((milliseconds / (1000*60)) % 60);
int hours = (int) ((milliseconds / (1000*60*60)) % 24);
if (hours > 0){
if (hours == 1)
return "1 hour ago";
else if (hours < 24)
return String.valueOf(hours) + " hours ago";
else
{
int days = (int)Math.ceil(hours % 24);
if (days == 1)
return "1 day ago";
else
return String.valueOf(days) + " days ago";
}
}
else
{
if (minutes == 0)
return "less than 1 minute ago";
else if (minutes == 1)
return "1 minute ago";
else
return String.valueOf(minutes) + " minutes ago";
}
}
これでTwitterの日付/時刻を解析します(これもStackoverflowの投稿から)
public static Date parseTwitterDate(String date)
{
final String TWITTER = "EEE, dd MMM yyyy HH:mm:ss Z";
SimpleDateFormat sf = new SimpleDateFormat(TWITTER, Locale.ENGLISH);
sf.setLenient(true);
try {
return sf.parse(date);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
Twitter の日付の例: "created_at":"Sat, 30 Jun 2012 14:44:40 +0000",
私が知る限り、Twitter は正しく解析されていますが、正しく計算されていません (getTwitterDate)。4〜5時間の差がある場合、11時間を返すことがあります。