2011-07-01 21 views
1

を比較する私のような、ISO-8601形式で日付/時刻の文字列を持っている:2011-04-15T20:08:18Z形式のISO日付/時刻以降の携帯電話の日付/時刻に

私はより読みやすい日付にこれをフォーマットしたいです/時にそれを電話の現地時間と比較することもできます。私は、何が非難され、何がないのかについて少し混乱している。 Calendarオブジェクトを使用する必要がありますか?

誰かがこれを行う方法を教えてもらえますか?次

答えて

7

はコードである

long epoch = new java.text.SimpleDateFormat("yyyy/MM/dd HH:mm:ss").parse(nDate).getTime(); 
Date currentDate = new Date(); 
long diffInSeconds = (currentDate.getTime() - epoch)/1000; 
String elapsed = ""; 
long seconds = diffInSeconds; 
long mins = diffInSeconds/60; 
long hours = diffInSeconds/3600; 
long days = diffInSeconds/86400; 
long weeks = diffInSeconds/604800; 
long months = diffInSeconds/2592000; 

if (seconds < 120) { 
    elapsed = "a min ago"; 
} else if (mins < 60) { 
    elapsed = mins + " mins ago"; 
} else if (hours < 24) { 
    elapsed = hours + " "+ (hours > 1 ? "hrs" : "hr")+ " ago"; 
} else if (hours < 48) { 
    elapsed = "a day ago"; 
} else if (days < 7) { 
    elapsed = days + " days ago"; 
} else if (weeks < 5) { 
    elapsed = weeks + " " + (weeks > 1 ? "weeks" : "week") + " ago"; 
} else if (months < 12) { 
    elapsed = months" " + (months > 1 ? "months" : "months")+ " ago"; 
} else { 
    elapsed = "more than a year ago"; 
} 

ようにあなたができるようになります。この道を進みます。nDate 2つの日付を比較するために、あなたは、通常の形式で日付与える

StringBuffer sbDate = new StringBuffer(); 
sbDate.append(cDate); 
String newDate = sbDate.substring(0, 19).toString(); 
String rDate = newDate.replace("T", " "); 
String nDate = rDate.replaceAll("-", "/"); 

を使用することができますスニペット日付を比較して年、月、週、日、時間、分または秒で差異を得ることができるだけでなく、適切な形式で日付を取得することができます。

+0

+1明確な回避策があります。ありがとう。 :) – Wesley