1

我正在android中学习格式日期和时间,我想尝试将日期和时间转换为时间线......?例子:

String current_date = "2013-10-07 20:57:20";

String val_date1 = "2013-10-07 20:57:20";
String val_date2 = "2013-10-07 19:57:20";
String val_date3 = "2013-10-07 17:57:20";
String val_date4 = "2013-09-07 20:57:20";

以上日期和调整后的CURRENT_DATE已转换,结果如下:

String val_date1_after_formated = "just now";
String val_date2_after_formated = "1h";
String val_date3_after_formated = "3h";
String val_date4_after_formated = "1d";

如何用程序转换日期?我希望任何人都可以帮助我。对不起,如果我的英语不好...

4

3 回答 3

3

这是一个应该完成工作的功能

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
int[] steps = {1,60,3600,3600*24};
String[] names = {"seconds","minutes","hours","days"};

//...

public String formatDelay(String date){
    try {
        Date d = sdf.parse(date);
        Long stamp = d.getTime()/1000;
        Long now = System.currentTimeMillis()/1000;         
        Long dif = now - stamp;

        if(stamp > now) return "";

        for(int i=0;i<steps.length;i++){
            if(dif<steps[i]){
                String output = Long.toString(dif/steps[i-1])+" "+names[i-1];
                return output;
            }
        }       

        return Long.toString(dif/steps[3])+" "+names[3];


    } catch (Exception e){
        e.printStackTrace();
        return "";
    }
于 2013-10-09T15:14:11.817 回答
1

formatDuration可能对此有好处:

public String getDuration(long time) {
    StringBuilder sb = new StringBuilder();
    android.support.v4.util.TimeUtils.formatDuration(System.currentTimeMillis() - date, sb);
    return sb.toString();
}

现在要获取long time您需要解析输入日期(可能使用SimpleDateFormat)。

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.US);
long date = sdf.parse("2013-10-07 20:57:20").getTime();
String duration = getDuration(date);
于 2013-10-09T15:00:16.440 回答
0

不确定这是否是您要查找的内容,但要获取当前时间,请使用它。以毫秒为单位返回。

System.currentTimeMillis() / 1000L;

要将其格式化为时间日期时间,请使用此代码。

long loadDate = System.currentTimeMillis() / 1000L;
String dateString = new SimpleDateFormat("MM/dd/yyyy").format(new Date(loadDate));
于 2013-10-09T14:55:27.990 回答