Iam開發一個發送短信的應用程序。 Iam通過從數據庫中檢索時間來存儲當前時間並顯示在已發送的歷史記錄頁面中。在發送的歷史記錄頁面中,我想顯示發送消息的時間。在這裏,我想檢查消息已經發送今天或昨天或昨天之前這樣。如果郵件昨天發送意味着那麼我需要顯示「昨天20:00」那樣,甚至郵件昨天發送意味着「星期一20:00」。我不知道它是如何做的。如果有人知道,請幫助我。如何查找時間是今天或昨天在android
回答
你可以使用android.text.format.DateFormat類輕鬆地做到這一點。嘗試這樣的事情。
public String getFormattedDate(Context context, long smsTimeInMilis) {
Calendar smsTime = Calendar.getInstance();
smsTime.setTimeInMillis(smsTimeInMilis);
Calendar now = Calendar.getInstance();
final String timeFormatString = "h:mm aa";
final String dateTimeFormatString = "EEEE, MMMM d, h:mm aa";
final long HOURS = 60 * 60 * 60;
if (now.get(Calendar.DATE) == smsTime.get(Calendar.DATE)) {
return "Today " + DateFormat.format(timeFormatString, smsTime);
} else if (now.get(Calendar.DATE) - smsTime.get(Calendar.DATE) == 1 ){
return "Yesterday " + DateFormat.format(timeFormatString, smsTime);
} else if (now.get(Calendar.YEAR) == smsTime.get(Calendar.YEAR)) {
return DateFormat.format(dateTimeFormatString, smsTime).toString();
} else {
return DateFormat.format("MMMM dd yyyy, h:mm aa", smsTime).toString();
}
}
查看http://developer.android.com/reference/java/text/DateFormat.html以進一步瞭解。
你確定它是正確的嗎?你只比較日期,年和月呢?今天是20.11.2014,但你的代碼顯示20.10.2010 – Daryn
是「今日」是@Daryn,不正確 –
這個答案不正確。根據文檔,Calendar.DATE是DAY_OF_MONTH的同義詞。因此,你不是比較年份和月份。 –
我可以建議你一件事。當你發送短信存儲到數據庫的細節,以便你可以顯示在歷史頁面上發送短信的日期和時間。
是iam將時間存儲在數據庫中。但我需要檢查存儲的時間是否是今天或昨天或昨天之前。 – Manikandan
如果你存儲的時間。那麼爲什麼你不能存儲他的約會呢? – Goofy
是的,我可以,但我需要顯示像「今天8:00」,就像在textview – Manikandan
要檢查,如果今天的日期是,使用Android utils的庫
DateUtils.isToday(long timeInMilliseconds)
這utils的類還提供人類可讀的字符串相對時間。例如,
DateUtils.getRelativeTimeSpanString(long timeInMilliseconds) -> "42 minutes ago"
的幾個參數,你可以定義的時間跨度應該如何準確是
Calendar now = Calendar.getInstance();
long secs = (dateToCompare - now.getTime().getTime())/1000;
if (secs > 0) {
int hours = (int) secs/3600;
if (hours <= 24) {
return today + "," + "a formatted day or empty";
} else if (hours <= 48) {
return yesterday + "," + "a formatted day or empty";
}
} else {
int hours = (int) Math.abs(secs)/3600;
if (hours <= 24) {
return tommorow + "," + "a formatted day or empty";
}
}
return "a formatted day or empty";
你可以試試這個玩:
Calendar mDate = Calendar.getInstance(); // just for example
if (DateUtils.isToday(mDate.getTimeInMillis())) {
//format one way
} else {
//format in other way
}
工程就像一個魅力! –
完美,像魅力作品 –
今天,您可以使用DateUtils.isToday
從android API。
昨天您可以使用代碼:
public static boolean isYesterday(long date) {
Calendar now = Calendar.getInstance();
Calendar cdate = Calendar.getInstance();
cdate.setTimeInMillis(date);
now.add(Calendar.DATE,-1);
return now.get(Calendar.YEAR) == cdate.get(Calendar.YEAR)
&& now.get(Calendar.MONTH) == cdate.get(Calendar.MONTH)
&& now.get(Calendar.DATE) == cdate.get(Calendar.DATE);
}
DateUtils.isToday()
應該考慮廢棄了,因爲android.text.format.Time
現在已經過時。 在他們更新isToday的源代碼之前,在這裏沒有解決方案,昨天,今天檢測到處理轉換到/從夏令時轉換,並且不使用已棄用的代碼。這是在科特林,使用today
場必須定期及時更新(例如onResume
等):
@JvmStatic
fun dateString(ctx: Context, epochTime: Long): String {
val epochMS = 1000*epochTime
val cal = Calendar.getInstance()
cal.timeInMillis = epochMS
val yearDiff = cal.get(Calendar.YEAR) - today.get(Calendar.YEAR)
if (yearDiff == 0) {
if (cal.get(Calendar.DAY_OF_YEAR) >= today.get(Calendar.DAY_OF_YEAR))
return ctx.getString(R.string.today)
}
cal.add(Calendar.DATE, 1)
if (cal.get(Calendar.YEAR) == today.get(Calendar.YEAR)) {
if (cal.get(Calendar.DAY_OF_YEAR) == today.get(Calendar.DAY_OF_YEAR))
return ctx.getString(R.string.yesterday)
}
val flags = if (yearDiff == 0) DateUtils.FORMAT_ABBREV_MONTH else DateUtils.FORMAT_NUMERIC_DATE
return DateUtils.formatDateTime(ctx, epochMS, flags)
}
我申請https://code.google.com/p/android/issues/detail?id=227694&thanks=227694&ts=1479155729,下去吧
投票這是獲取值的方法像今天,昨天和日期一樣Whtsapp應用有
public String getSmsTodayYestFromMilli(long msgTimeMillis) {
Calendar messageTime = Calendar.getInstance();
messageTime.setTimeInMillis(msgTimeMillis);
// get Currunt time
Calendar now = Calendar.getInstance();
final String strTimeFormate = "h:mm aa";
final String strDateFormate = "dd/MM/yyyy h:mm aa";
if (now.get(Calendar.DATE) == messageTime.get(Calendar.DATE)
&&
((now.get(Calendar.MONTH) == messageTime.get(Calendar.MONTH)))
&&
((now.get(Calendar.YEAR) == messageTime.get(Calendar.YEAR)))
) {
return "today at " + DateFormat.format(strTimeFormate, messageTime);
} else if (
((now.get(Calendar.DATE) - messageTime.get(Calendar.DATE)) == 1)
&&
((now.get(Calendar.MONTH) == messageTime.get(Calendar.MONTH)))
&&
((now.get(Calendar.YEAR) == messageTime.get(Calendar.YEAR)))
) {
return "yesterday at " + DateFormat.format(strTimeFormate, messageTime);
} else {
return "date : " + DateFormat.format(strDateFormate, messageTime);
}
}
使用此方法只是通過毫秒像
getSmsTodayYestFromMilli(Long.parseLong("1485236534000"));
如前所述,DateUtils.isToday(d.getTime())
將決定如果今天Date d
是工作。但是這裏的一些迴應並沒有真正回答如何確定一個日期是否是昨天。你也可以做到這一點很容易與DateUtils
:
public static boolean isYesterday(Date d) {
return DateUtils.isToday(d.getTime() + DateUtils.DAY_IN_MILLIS);
}
在此之後,你也可以判斷一個日期是明天:
public static boolean isTomorrow(Date d) {
return DateUtils.isToday(d.getTime() - DateUtils.DAY_IN_MILLIS);
}
這應該是被接受的答案。簡單易讀,且有效。唯一能讓它更有效的方法是爲毫秒時間戳寫入方法,這樣可以將它用於日曆,日期或任何你喜歡的類。 – user1806772
- 1. 今天和昨天找一段時間
- 2. 如何獲得時間今天或昨天17:00:00?
- 3. PHP:如何檢查日期是今天,昨天還是明天
- 4. Swift - 檢查一個時間戳是昨天,今天,明天還是X天前
- 5. 如何獲得今天,昨天,或一天在javascript
- 6. 找出NSDate是否是今天,昨天,明天
- 7. 昨天或今天創建的文件
- 8. PHP:時間 - 「今天」 - 「昨天」的日期,而不是小時
- 9. PHP:日期「昨天」,「今天」
- 10. 從昨天/今天查看日誌
- 11. 獲取今天和昨天的時間戳在php
- 12. PHP今天/昨天在論壇
- 13. SSRS指標顯示是否今天或昨天更新日期
- 14. SQL找到今天,明天和昨天生日
- 15. 今天,昨天...以及其他時間添加了計數行
- 16. SQL Server日期時間指示今天和昨天
- 17. mysql查詢選擇昨天,今天和明天
- 18. PHP:讓今天的過濾器/昨天
- 19. 訪問比較今天和昨天
- 20. 定義VAR今天和昨天
- 21. PHP日期格式今天/昨天
- 22. 如何從今天,昨天等使用Ruby on Rails查找記錄?
- 23. 在昨天和今天之間選擇記錄
- 24. 如何檢查時間是昨天上午9點到今天上午9點之間的Ruby?
- 25. 查詢查找哪些報告今天尚未生成,但昨天生成?
- 26. SSRS訂閱允許今天或昨天的參數SQL Server 2012
- 27. 如何從MySQL數據庫獲取今天/昨天的數據?
- 28. 我如何選擇今天/昨天的兩個日期?
- 29. SQL查詢獲取和更新今天和昨天的數據?
- 30. 我如何找到今天的日期與今天X天之間的差異?
您可以使用Java – keyser
做到這一點,請展示你的代碼,你已經做了... – Goofy
@Keyser你能告訴我怎麼做嗎? – Manikandan