Android: конвертировать строку во время - PullRequest
1 голос
/ 19 августа 2011

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

2011-08-17 04:57:38

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

    public void RelativeTime(Long time){
    String str = (String) DateUtils.getRelativeDateTimeString(

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

            time, // The time to display

            DateUtils.SECOND_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

    toast(str);

}

Так что функция должна показывать тост "2 дня назад" и т. Д.

Спасибо!

РЕДАКТИРОВАТЬ: Извините, у меня есть функция тоста, я также написал.

public void toast(String text){
    Toast.makeText(getApplicationContext(), text, Toast.LENGTH_SHORT).show();
}

Ответы [ 4 ]

4 голосов
/ 19 августа 2011

Используйте SimpleDateFormat и его функцию parse() для преобразования вашей временной метки из строки в Date объект.После этого вы можете использовать Date.getTime() для получения длинного значения вашей отметки времени в мс.

1 голос
/ 28 января 2014

Пожалуйста, проверьте приведенный ниже код, я его модифицировал, может это решит вашу проблему:

try {
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss a", Locale.US);
        Date now = formatter.parse("2014-01-26 05:36:38 PM");
        Calendar calendar=Calendar.getInstance(Locale.US);
        calendar.setTime(now);

        RelativeTime(now.getTime());

    } catch (Exception e) {
        e.printStackTrace();
    } 

public void RelativeTime(Long time){
    String str = (String) DateUtils.getRelativeDateTimeString(

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

            time, // The time to display

            DateUtils.SECOND_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

    toast(str);

}

public void toast(String text){
    Toast.makeText(getApplicationContext(), text, Toast.LENGTH_SHORT).show();
}
0 голосов
/ 19 августа 2011

Вам нужен SimpleDateFormat
Что-то вроде следующего кода может помочь вам
"формат" - это структура кодирования вашей строковой даты, например "dd MMM гггг чч: мм: сс zzz"
"Значение" в коде - это ваша строковая дата.
См. http://developer.android.com/reference/java/text/SimpleDateFormat.html, чтобы получить подробную информацию о формате и других «методах», касающихся SimpleDateFormat

SimpleDateFormat sf = new SimpleDateFormat(format);
sf.setTimeZone(TimeZone.getTimeZone("UTC"));

//sf.setCalendar(Calendar.getInstance());
ParsePosition pp = new ParsePosition(0); 
Date date = sf.parse(Value,pp);
if (pp.getIndex() == 0) {
    Log.e(TAG,"Can't getDate with format:\""+format+"\" and value:\""+Value + "\" at char index:"+pp.getErrorIndex());
    return Calendar.getInstance();
}
Calendar cal = Calendar.getInstance();
cal.setTime(date);

cal.getTimeInMillis (); совместим с вашим параметром "time" (тип long)

0 голосов
/ 19 августа 2011

Я верю, что вы называете тост неверным.

Попробуйте эту ссылку, она должна помочь вам немного больше.

Поджаренный хлеб. Я просто назвал это сумасшедшим именем lol

...