Как проверить, является ли отметка времени (эпоха) сегодняшним или вчерашним [android] - PullRequest
1 голос
/ 22 февраля 2012

Я хочу преобразовать метку времени (время эпохи) в читаемую человеком строку.

Для этого я использую функцию calendar.setTimeInMillis(timeSinceEpoch), чтобы создать объект календаря и получить строку даты и времени в удобочитаемом формате.

Я в замешательстве. Как я могу узнать, что отметка времени (времени эпохи) относится к сегодняшнему или вчерашнему дню или к той же неделе, что и текущие дата и время системы?

Есть ли API для достижения этой цели в Android?

Спасибо.

Ответы [ 4 ]

6 голосов
/ 22 февраля 2012

Вы можете использовать методы:

public static long diff(long time, int field) {
  long fieldTime = getFieldInMillis(field);
  Calendar cal = Calendar.getInstance();
  long now = cal.getTimeInMillis();
  return (time/fieldTime - now / fieldTime);
}

private static final long getFieldInMillis(int field) {
  // TODO cache values
  final Calendar cal = Calendar.getInstance();
  long now = cal.getTimeInMillis();
  cal.add(field, 1);
  long after = cal.getTimeInMillis();
  return after - now;
}

и используйте их так:

diff(time, Calendar.DAY_OF_YEAR); // 0 - today, 1 - tomorrow, -1 - yesterday
diff(time, Calendar.WEEK_OF_YEAR); // 0 - this week, -1 - last week etc.
5 голосов
/ 22 февраля 2012

Это действительно просто:

Calendar c=Calendar.getInstance();
c.getTimeInMillis();
String cur_day=String.format("%te %B %tY",c,c,c); // This will give date like 22 February 2012

c.setTimeInMillis(time);//set your saved timestamp
String that_day=String.format("%te %B %tY",c,c,c); //this will convert timestamp into format like 22 February 2012

//you can compare days,months,year,hours,minutes,seconds and milliseconds using above method.you can find various formats in below link

Для большего количества форматов, пожалуйста, обратитесь http://download.oracle.com/javase/1.5.0/docs/api/java/util/Formatter.html

3 голосов
/ 04 июня 2013

Вы можете попытаться использовать это для определения сегодняшней даты:

public static boolean isDateToday(long milliSeconds) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTimeInMillis(milliSeconds);

        Date getDate = calendar.getTime();

        calendar.setTimeInMillis(System.currentTimeMillis());
        calendar.set(Calendar.HOUR_OF_DAY, 0);
        calendar.set(Calendar.MINUTE, 0);
        calendar.set(Calendar.SECOND, 0);

        Date startDate = calendar.getTime();

        return getDate.compareTo(startDate) > 0;

    }
1 голос
/ 27 августа 2013

Я думаю, что это самый эффективный способ выяснить, если две метки времени находятся в один и тот же день.Кроме того, он не зависит от языка:

int secondsInADay   = 60*60*24;
int daysSinceEpoch1 = timestamp1/secondsInADay;
int daysSinceEpoch2 = timestamp2/secondsInADay;

if( daysSinceEpoch1 == daysSinceEpoch2 )
    ;//sameday

else if( daysSinceEpoch1 - daysSinceEpoch2 == 1 )
    ;//timestamp2 is a day before timetamp1

else if( ......

установите метку времени1 на текущее время, если хотите сравнить с сегодняшним днем ​​

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...