我想實現讓我們說'社交'日期格式。我已經有了一個解決方案,但感覺應該存在一個更好的解決方案。爲什麼社會和這是什麼意思:日期到'社交'格式字符串
如果我們看看我們可以下一個選項之間區別的帖子Facebook的時間戳:
- X秒前
- X分鐘前
- X小時前
- 昨天上午11時07
- 週五下午9點36
- 5月5日下午5:00
- 11月20日9:05 PM,2012
我做了更好的解釋下一個可視時間表:
例如:
如果當前時間爲: 下午5時33分,在20秒週三
社會後發生了:00:00週二 < - >下午5點33分,20秒週二,
那麼日期格式應該是這樣的:昨天上午11:07,。
解決方案我有:
我檢查每個選項(在數7),並返回「社會」的日期字符串。
我這是怎麼檢查選項1:
Date postDate = getPostDate();
Date nowDate = getNowDate();
// check passed seconds
int passedSeconds = getPassedSeconds(postDate, nowDate);
if (passedSeconds < 60)
{
return passedSeconds + " seconds ago";
}
我這是怎麼檢查選項4:
// check yesterday
Date startYesterdayDate = getZeroDayBeforeDays(nowDate, 1);
int compare = compare(startYesterdayDate, postDate);
// if postDate comes after startYesterdayDate
if (compare == -1)
{
return "Yesterday at " + getString(postDate, "HH:mma");
}
我檢查以同樣的方式其他選項。
一些方法我在用我的,如果上述聲明:
public static String getString(Date date, String format)
{
Format formatter = new SimpleDateFormat(format, Locale.US);
String s = formatter.format(date);
return s;
}
/**
* For example: today - 1 day
*
* @param date
* @param numOfMinusDays
* @return
*/
public static Date getDateMinusDays(Date date, int numOfMinusDays)
{
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.DAY_OF_MONTH, (0 - numOfMinusDays));
return calendar.getTime();
}
/**
* Get the day before today at 00:00 am.<br>
* Means, if passed day = <b>Nov 5 13:04</b>, then returned date will be = <b>Nov 4 00:00</b> for days = 1
*
* @param date
* @param days Numner of days to reduce
* @return
*/
public static Date getZeroDayBeforeDays(Date date, int days)
{
Calendar yesterday = Calendar.getInstance();
yesterday.setTime(getDateMinusDays(date, days));
yesterday.set(Calendar.HOUR_OF_DAY, 0);
yesterday.set(Calendar.MINUTE, 0);
yesterday.set(Calendar.SECOND, 0);
yesterday.set(Calendar.MILLISECOND, 1);
return yesterday.getTime();
}
最後,我的問題:
是否有轉換兩者之間的差異的一個更好的辦法日期爲'社交'字符串格式?正如我所說,我覺得有些其他方式可能會延伸
DateFormat
對象可以使用,但我不確定。如何本地化像「昨天」和字符串「在」,使得不同的
Local
組將改變字符串合適的語言?
對不起,這麼長的問題,但我找不到更短的方式來解釋的必要。
感謝
很有趣......,好像它是我尋找的是什麼。我會檢查這個圖書館。謝謝! – sromku
不客氣 –