1

我正在尝试将包含时间戳的字符串转换为与 androidsRelativeDateTimeString 一致的时间,因此我可以将其格式化为相对时间。我得到的时间戳是这种格式:

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天前”等的祝酒词。

编辑:对不起,我也写了一个 toast 函数。

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

4 回答 4

4

使用SimpleDateFormat,它parse()可以将时间戳从字符串转换为Date对象。之后,您可以使用Date.getTime()以毫秒为单位获取时间戳的长值。

于 2011-08-19T15:10:58.473 回答
1

请检查我已修改的以下代码,这是否可以解决您的问题:

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();
}
于 2014-01-28T12:32:23.113 回答
0

我相信你叫吐司的方式是不正确的。

试试这个链接,它应该可以帮助你更多。

烤面包。我只是给了一个疯狂的名字哈哈

于 2011-08-19T15:06:14.207 回答
0

您需要 SimpleDateFormat
类似以下代码的内容可能会帮助您
“格式化”是字符串日期的编码结构,例如“dd MMM yyyy hh:mm:ss 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(); 与您的“时间”参数兼容(长类型)

于 2011-08-19T15:16:41.740 回答