2013-11-13 4 views
0

Как конвертировать дату в ее текстовый формат .. для ex: если обновлено сегодня. Затем вместо даты он должен показывать «Сегодня», на следующий день после этого должен показать «Вчера», а затем после двух days..it должны отображать дату в общем виде (//_), на котором он был updated..i попытался с помощью SimpleDateFormat..but не работает ..Преобразование даты в текстовый формат

SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy"); 

     Date d= new Date(); 

     //Convert Date object to string 
     String strDate = sdf.format(d); 
     System.out.println("Formated String is " + strDate); 


     d = sdf.parse("31-12-2009"); 

Plz помочь .. Спасибо заранее.

+1

Получить текущую дату и проверить разницу. –

+0

Получить текущую дату и использовать метод даты, т. Е. Дата - 'date.before' или' date.after' – Andrain

ответ

0

Для сравнения дат см. Эту запись: datecompare

+0

Хотя эта ссылка может содержать ответ, предпочтительнее также включать сводку, а не только ссылку. Таким образом, ответ будет по-прежнему полезен для других, если связь нарушается или изменяется. – Leigh

+0

ОК. я делаю это с этого времени – Invader

+0

Ссылка только ответы часто удаляются, так что сейчас самое время, как и все :) – Leigh

0

Вы должны реализовать свою собственную логику на основе разницы во времени и использовать соответствующий формат даты.

Предположим, вы получаете дату с сервера. Получите время устройства и сравните его с вашей датой. Для ваших требований будет два случая.

  1. Разница между двумя датами меньше, чем днем, а затем возвращает строку «Сегодня».
  2. Разница между двумя датами больше, чем через день, а затем используется формат простой даты, чтобы отформатировать дату так, как вы хотите.
1

Попробуйте это:

public class TimeUtils { 

     public final static long ONE_SECOND = 1000; 
     public final static long SECONDS = 60; 

     public final static long ONE_MINUTE = ONE_SECOND * 60; 
     public final static long MINUTES = 60; 

     public final static long ONE_HOUR = ONE_MINUTE * 60; 
     public final static long HOURS = 24; 

     public final static long ONE_DAY = ONE_HOUR * 24; 

     private TimeUtils() { 
     } 

     /** 
     * converts time (in milliseconds) to human-readable format 
     * "<w> days, <x> hours, <y> minutes and (z) seconds" 
     */ 
     public static String millisToLongDHMS(long duration) { 
     StringBuffer res = new StringBuffer(); 
     long temp = 0; 
     if (duration >= ONE_SECOND) { 
      temp = duration/ONE_DAY; 
      if (temp > 0) { 
      duration -= temp * ONE_DAY; 
      res.append(temp).append(" day").append(temp > 1 ? "s" : "") 
       .append(duration >= ONE_MINUTE ? ", " : ""); 
      } 

      temp = duration/ONE_HOUR; 
      if (temp > 0) { 
      duration -= temp * ONE_HOUR; 
      res.append(temp).append(" hour").append(temp > 1 ? "s" : "") 
       .append(duration >= ONE_MINUTE ? ", " : ""); 
      } 

      temp = duration/ONE_MINUTE; 
      if (temp > 0) { 
      duration -= temp * ONE_MINUTE; 
      res.append(temp).append(" minute").append(temp > 1 ? "s" : ""); 
      } 

      if (!res.toString().equals("") && duration >= ONE_SECOND) { 
      res.append(" and "); 
      } 

      temp = duration/ONE_SECOND; 
      if (temp > 0) { 
      res.append(temp).append(" second").append(temp > 1 ? "s" : ""); 
      } 
      return res.toString(); 
     } else { 
      return "0 second"; 
     } 
     } 


     public static void main(String args[]) { 
     System.out.println(millisToLongDHMS(123)); 
     System.out.println(millisToLongDHMS((5 * ONE_SECOND) + 123)); 
     System.out.println(millisToLongDHMS(ONE_DAY + ONE_HOUR)); 
     System.out.println(millisToLongDHMS(ONE_DAY + 2 * ONE_SECOND)); 
     System.out.println(millisToLongDHMS(ONE_DAY + ONE_HOUR + (2 * ONE_MINUTE))); 
     System.out.println(millisToLongDHMS((4 * ONE_DAY) + (3 * ONE_HOUR) 
      + (2 * ONE_MINUTE) + ONE_SECOND)); 
     System.out.println(millisToLongDHMS((5 * ONE_DAY) + (4 * ONE_HOUR) 
      + ONE_MINUTE + (23 * ONE_SECOND) + 123)); 
     System.out.println(millisToLongDHMS(42 * ONE_DAY)); 
     /* 
      output : 
       0 second 
       5 seconds 
       1 day, 1 hour 
       1 day and 2 seconds 
       1 day, 1 hour, 2 minutes 
       4 days, 3 hours, 2 minutes and 1 second 
       5 days, 4 hours, 1 minute and 23 seconds 
       42 days 
     */ 
    } 
} 
0
import java.text.SimpleDateFormat; 
import java.util.Date; 

public class App { 

    SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy"); 
    public static long ms, s, m, h, d, w; 

    static { 
     ms = 1; 
     s = ms * 1000; 
     m = s * 60; 
     h = m * 60; 
     d = h * 24; 
     w = d * 7; 
    } 

    public App() { 
      Date now = new Date(); 
      Date old = new Date(); 

      try { 
       old = sdf.parse("12-11-2013"); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 

      long diff = now.getTime() - old.getTime(); 

      if (diff < this.d) { 
       System.out.println("Today"); 
      } 
      else if (diff > this.d && diff < this.d*2) { 
       System.out.println("Yesterday"); 
      } 

      System.out.println("Difference: " + msToHms(diff)); 
    } 

    public String msToHms(long ms) { 
     int seconds = (int) (ms/this.s) % 60 ; 
     int minutes = (int) ((ms/this.m) % 60); 
     int hours = (int) ((ms/this.h) % 24); 

     return String.format("%02d:%02d:%02d", hours, minutes, seconds); 
    } 

    public static void main(String[] args) { 
     new App(); 
    } 
} 

Выход

Yesterday 
Difference: 07:11:22 
Смежные вопросы