相对时间跨度的自定义格式

Custom format for relative time span(相对时间跨度的自定义格式)
本文介绍了相对时间跨度的自定义格式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

我正在尝试创建一种自定义格式来显示经过的时间.

I'm trying to create an custom format to display the elapsed time.

现在我正在使用:

CharSequence relativeTimeSpan = DateUtils.getRelativeTimeSpanString(
     dateObject.getTime(), 
     System.currentTimeMillis(), 
     DateUtils.SECOND_IN_MILLIS,
     flags);

这会返回像这样的相对时间跨度:

This returns relative time spans like this:

  • 1 分钟前
  • 36 分钟前
  • 4 小时前

...

我想要做的是显示这个,像这样:

What I'm trying to do is display this, like this:

  • 1m
  • 36m
  • 4 小时

...

我知道 DateUtils 有 FORMAT_ABBREV_ALL 标志,但这并没有像我想要的那样缩写字符串......

I know DateUtils has FORMAT_ABBREV_ALL flag, but this doesn't abbreviate the string like I want to...

我怎样才能为此创建一些自定义的东西?

How can I create something custom for this ?

推荐答案

我已经在我的 twitter 模块中完成了这个

i have done this in my twitter module

public static String getTimeString(Date fromdate) {

    long then;
    then = fromdate.getTime();
    Date date = new Date(then);

    StringBuffer dateStr = new StringBuffer();

    Calendar calendar = Calendar.getInstance();
    calendar.setTime(date);
    Calendar now = Calendar.getInstance();

    int days = daysBetween(calendar.getTime(), now.getTime());
    int minutes = hoursBetween(calendar.getTime(), now.getTime());
    int hours = minutes / 60;
    if (days == 0) {

        int second = minuteBetween(calendar.getTime(), now.getTime());
        if (minutes > 60) {

            if (hours >= 1 && hours <= 24) {
                dateStr.append(hours).append("h");
            }

        } else {

            if (second <= 10) {
                dateStr.append("Now");
            } else if (second > 10 && second <= 30) {
                dateStr.append("few seconds ago");
            } else if (second > 30 && second <= 60) {
                dateStr.append(second).append("s");
            } else if (second >= 60 && minutes <= 60) {
                dateStr.append(minutes).append("m");
            }
        }
    } else

    if (hours > 24 && days <= 7) {
        dateStr.append(days).append("d");
    } else {
        dateStr.append(twtimeformat.format(date));
    }

    return dateStr.toString();
}

public static int minuteBetween(Date d1, Date d2) {
    return (int) ((d2.getTime() - d1.getTime()) / DateUtils.SECOND_IN_MILLIS);
}

public static int hoursBetween(Date d1, Date d2) {
    return (int) ((d2.getTime() - d1.getTime()) / DateUtils.MINUTE_IN_MILLIS);
}

public static int daysBetween(Date d1, Date d2) {
    return (int) ((d2.getTime() - d1.getTime()) / DateUtils.DAY_IN_MILLIS);
}

这篇关于相对时间跨度的自定义格式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

相关文档推荐

How can I use CClistview in COCOS2d Android?(如何在 COCOS2d Android 中使用 CClistview?)
cocos2d-android: how to display score(cocos2d-android:如何显示分数)
Sqlite database not copied from asset folder Android(Sqlite 数据库未从资产文件夹 Android 复制)
SQLite Database Copy Appears Corrupted When Generated by Device and not Emulator(SQLite 数据库副本在由设备而不是模拟器生成时出现损坏)
Android file copy(安卓文件拷贝)
Android how to detect Copy event of Edittext in android(Android如何在android中检测Edittext的Copy事件)