2011-08-16 54 views

Trả lời

33

Tôi đoán bạn đang nói về getRelativeDateTimeString, được chỉ bởi liên kết của bạn.

Ví dụ cho now, với ý kiến ​​chi tiết tất cả các params:

Date now = new Date(); 
String str = DateUtils.getRelativeDateTimeString(

     this, // Suppose you are in an activity or other Context subclass 

     now.getTime(), // The time to display 

     DateUtils.MINUTE_IN_MILLIS, // The resolution. This will display only 
             // minutes (no "3 seconds ago") 


     DateUtils.WEEK_IN_MILLIS, // The maximum resolution at which the time will switch 
         // to default date instead of spans. This will not 
         // display "3 weeks ago" but a full date instead 

     0); // Eventual flags 

giá trị khác cho MINUTE_IN_MILLISYEAR_IN_MILLIS bao gồm:

  • SECOND_IN_MILLIS
  • MINUTE_IN_MILLIS
  • HOUR_IN_MILLIS
  • DAY_IN_MILLIS
  • WEEK_IN_MILLIS
  • YEAR_IN_MILLIS
  • Bất kỳ giá trị tùy chỉnh trong mili giây
+6

Bạn đã thử với WEEK_IN_MILLIS và YEAR_IN_MILLIS chưa? Tôi không thể làm cho nó hoạt động, đây là mã của tôi: 'code' time = now - 7 * 24 * 60 * 60 * 1000; văn bản + = DateUtils.getRelativeDateTimeString (này, thời gian, DateUtils.MINUTE_IN_MILLIS, \t \t DateUtils.YEAR_IN_MILLIS, 0) + "\ n"; 'code'. Và tôi tự hỏi tại sao nó không hỗ trợ MONTH_IN_MILLIS – thanhbinh84

+5

Tại sao 'DateTimeUtils' (từ Joda Time?) Thay vì' DateUtils' ([một phần của android] (http://developer.android.com/reference/android/text/format/ DateUtils.html))? – cdunn2001

4

Tôi nghĩ rằng một câu hỏi tốt hơn sẽ xác định những gì bạn muốn như một đầu ra. Tuy nhiên, đây là một ví dụ:

DateUtils.getRelativeTimeSpanString(yourContext, theEventInMillis, 
            DateUtils.MINUTE_IN_MILLIS, 
            DateUtils.FORMAT_NO_NOON); 

Điều này sẽ định dạng theEventInMillis liên quan đến thời gian hiện tại của hệ thống. Nó sẽ hiển thị những thay đổi trong vài phút (0 phút trước, 2 phút trước, 3 giờ trước, 1 ngày trước, vv) cho đến khi sự khác biệt đạt đến một tuần, sau đó nó sẽ chỉ đăng ngày đầy đủ. Trường cờ (0 trong trường hợp này, đối số cuối cùng) bạn có thể sử dụng để kiểm soát cách chuỗi kết quả được hiển thị, nhưng bạn nên kiểm tra tài liệu để xem điều gì phù hợp với nhu cầu của bạn.

+0

Xin chào @dmon, không có chữ ký phương thức nào cho getRelativeTimeSpanString khớp với các đối số trong ví dụ của bạn. Điều đó không khớp với một trong các phương thức cho getRelativeDateTimeString. –

+0

Bạn nói đúng, tôi đã xóa giá trị "transitionResolution". – dmon