我正在解析推特,我想显示自推特发布以来的时间。但它似乎计算不正确。我从 Stackoverflow 上的另一篇文章中获得了公式,并尝试从中构建返回语句。
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;
}
推特日期示例:"created_at":"Sat, 30 Jun 2012 14:44:40 +0000",
据我所知,推特被正确解析但计算不正确(getTwitterDate)。当相差 4-5 小时时,有时会返回 11 小时。