android 计算时间多少分钟前

package com.xiawenquam.testdate.demo;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.widget.TextView;

public class MainActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //2012-08-13T14:19:53+0800

        //两种时间戳格式
//        String s = getTimeDisplay("20120813T14:19:53", this, false);
        String s = getTimeDisplay("2012-08-13T14:19:53+0800", this, true);
        System.out.println("s=== " + s);
        
        ((TextView)findViewById(R.id.textView)).setText(s);
        
    }
    
    
    /**
     * 当前时间计算
     * 
     * @param getDateString
     * @return
     */
    public static String getTimeDisplay(String getDateString, Context context) {
        return getTimeDisplay(getDateString, context, true);
    }
    
    public static String getTimeDisplay(String getDateString, Context context, boolean timeZone) {
    	Date getDate = null;
        try {
            if (timeZone) {
            	getDate = getFormat("yyyy-MM-dd'T'HH:mm:ssZ").parse(getDateString);
            } else {
            	getDate = getFormat("yyyyMMdd'T'HH:mm:ss").parse(getDateString);
            }
        } catch (ParseException e) {
            getDate = new Date();
        }

        final long getTime = getDate.getTime();

        final long currTime = System.currentTimeMillis();
        final Date formatSysDate = new Date(currTime);

        // 判断当前总天数
        final int sysMonth = formatSysDate.getMonth() + 1;
        final int sysYear = formatSysDate.getYear();

        // 计算服务器返回时间与当前时间差值
        final long seconds = (currTime - getTime) / 1000;
        final long minute = seconds / 60;
        final long hours = minute / 60;
        final long day = hours / 24;
        final long month = day / calculationDaysOfMonth(sysYear, sysMonth);
        final long year = month / 12;

        if (year > 0 || month > 0 || day > 0) {
            final SimpleDateFormat simpleDateFormat = new SimpleDateFormat(
                    "yyyy-MM-dd HH:mm");
            return simpleDateFormat.format(getDate);
        } else if (hours > 0) {
            return hours + context.getString(R.string.str_hoursago);
        } else if (minute > 0) {
            return minute + context.getString(R.string.str_minsago);
        } else if (seconds > 0) {
            return "1" + context.getString(R.string.str_minsago);
            // return seconds + context.getString(R.string.str_secondago);
        } else {
//          return "1" + context.getString(R.string.str_secondago);
            return "1" + context.getString(R.string.str_minsago); //都换成分钟前
        }
    }
    
    
    public static SimpleDateFormat getFormat(String partten) {
        return new SimpleDateFormat(partten);
    }
    
    /**
     * 计算月数
     * 
     * @return
     */
    private static int calculationDaysOfMonth(int year, int month) {
        int day = 0;
        switch (month) {
        // 31天
        case 1:
        case 3:
        case 5:
        case 7:
        case 8:
        case 10:
        case 12:
            day = 31;
            break;
        // 30天
        case 4:
        case 6:
        case 9:
        case 11:
            day = 30;
            break;
        // 计算2月天数
        case 2:
            day = year % 100 == 0 ? year % 400 == 0 ? 29 : 28
                    : year % 4 == 0 ? 29 : 28;
            break;
        }

        return day;
    }

}

 在发表评论的时候,是在多少分钟前的时间格式,上面就是实现方式。

猜你喜欢

转载自1002878825-qq-com.iteye.com/blog/1630533