时间工具类

来源:互联网 发布:c语言字符串最前面是0 编辑:程序博客网 时间:2024/06/05 17:30
  
import android.widget.TextView;import java.text.DateFormat;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import java.util.TimeZone;public class TimeFormartUtils {    public static String TAG = "cy==TimeUtils";    public static String getCurrentTimeSeconds() {        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");        Date curDate = new Date(System.currentTimeMillis());//获取当前时间        return formatter.format(curDate);    }    public static String getCurrentDay() {        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");        Date curDate = new Date(System.currentTimeMillis());//获取当前时间        return formatter.format(curDate);    }    public static String getCurrentTime() {        SimpleDateFormat format = new SimpleDateFormat("HH:mm");        return format.format(new Date());    }    public static String getCurrentDayHaveChinese() {        SimpleDateFormat formatter = new SimpleDateFormat("yyyy年MM月dd日");        Date curDate = new Date(System.currentTimeMillis());//获取当前时间        return formatter.format(curDate);    }    public static String getAssign(Date assignDay) {        SimpleDateFormat formatDate = new SimpleDateFormat("yyyy-MM-dd");        return formatDate.format(assignDay);    }    public static String getCurrentDayHaveChar() {        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");        Date curDate = new Date(System.currentTimeMillis());//获取当前时间        return formatter.format(curDate);    }    public static String getAssignAllNum(Date assignDay) {        SimpleDateFormat formatDate = new SimpleDateFormat("yyyyMMdd");        return formatDate.format(assignDay);    }    //把字符串解析成一个时间    public static Date getDateFromAllNumStr(String str) {        SimpleDateFormat formatDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");        try {            return formatDate.parse(str);        } catch (ParseException e) {            e.printStackTrace();        }        return null;    }    public static String getYearFromDate(Date date) {        SimpleDateFormat format = new SimpleDateFormat("yyyy");        return format.format(date);    }    public static String getMonthFromDate(Date date) {        SimpleDateFormat format = new SimpleDateFormat("MM");        return format.format(date);    }    public static String getDayFromDate(Date date) {        SimpleDateFormat format = new SimpleDateFormat("dd");        return format.format(date);    }    public static void setTime(TextView weekTv, TextView dateTv) {        final Calendar c = Calendar.getInstance();        c.setTimeZone(TimeZone.getTimeZone("GMT+8:00"));        String mYear = String.valueOf(c.get(Calendar.YEAR)); // 获取当前年份        String mMonth = String.valueOf(c.get(Calendar.MONTH) + 1);// 获取当前月份        String mDay = String.valueOf(c.get(Calendar.DAY_OF_MONTH));// 获取当前月份的日期号码        String mWay = String.valueOf(c.get(Calendar.DAY_OF_WEEK));        if ("1".equals(mWay)) {            mWay = "天";        } else if ("2".equals(mWay)) {            mWay = "一";        } else if ("3".equals(mWay)) {            mWay = "二";        } else if ("4".equals(mWay)) {            mWay = "三";        } else if ("5".equals(mWay)) {            mWay = "四";        } else if ("6".equals(mWay)) {            mWay = "五";        } else if ("7".equals(mWay)) {            mWay = "六";        }        weekTv.setText("星期" + mWay);        dateTv.setText(mYear + "年" + (Integer.parseInt(mMonth) < 10 ? (0 + mMonth) : (mMonth)) + "月"                + (Integer.parseInt(mDay) < 10 ? (0 + mDay) : (mDay)) + "日");    }    /**     * 两个时间之间相差距离多少天     *     * @return 相差天数     */    public static long getDistanceDays(String str1, String str2) throws Exception {        DateFormat df = new SimpleDateFormat("yyyy-MM-dd");        Date one;        Date two;        long days = 0;        try {            one = df.parse(str1);            two = df.parse(str2);            long time1 = one.getTime();            long time2 = two.getTime();            long diff;            if (time1 < time2) {                diff = time2 - time1;            } else {                diff = time1 - time2;            }            days = diff / (1000 * 60 * 60 * 24);        } catch (ParseException e) {            e.printStackTrace();        }        return days;    }    /**     * 两个时间相差距离多少天多少小时多少分多少秒     *     * @param str1 时间参数 1 格式:1990-01-01 12:00:00     * @param str2 时间参数 2 格式:2009-01-01 12:00:00     * @return long[] 返回值为:{天, 时, 分, 秒}     */    public static long[] getDistanceTimes(String str1, String str2) {        DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");        Date one;        Date two;        long day = 0;        long hour = 0;        long min = 0;        long sec = 0;        try {            one = df.parse(str1);            two = df.parse(str2);            long time1 = one.getTime();            long time2 = two.getTime();            long diff;            if (time1 < time2) {                diff = time2 - time1;            } else {                diff = time1 - time2;            }            day = diff / (24 * 60 * 60 * 1000);            hour = (diff / (60 * 60 * 1000) - day * 24);            min = ((diff / (60 * 1000)) - day * 24 * 60 - hour * 60);            sec = (diff / 1000 - day * 24 * 60 * 60 - hour * 60 * 60 - min * 60);        } catch (ParseException e) {            e.printStackTrace();        }        long[] times = {day, hour, min, sec};        return times;    }    /**     * 两个时间相差距离多少天多少小时多少分多少秒     *     * @param str1 时间参数 1 格式:1990-01-01 12:00:00     * @param str2 时间参数 2 格式:2009-01-01 12:00:00     * @return String 返回值为:xx天xx小时xx分xx秒     */    public static String getDistanceTime(String str1, String str2) {        DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");        Date one;        Date two;        long day = 0;        long hour = 0;        long min = 0;        long sec = 0;        try {            one = df.parse(str1);            two = df.parse(str2);            long time1 = one.getTime();            long time2 = two.getTime();            long diff;            if (time1 < time2) {                diff = time2 - time1;            } else {                diff = time1 - time2;            }            day = diff / (24 * 60 * 60 * 1000);            hour = (diff / (60 * 60 * 1000) - day * 24);            min = ((diff / (60 * 1000)) - day * 24 * 60 - hour * 60);            sec = (diff / 1000 - day * 24 * 60 * 60 - hour * 60 * 60 - min * 60);        } catch (ParseException e) {            e.printStackTrace();        }        return day + "天" + hour + "小时" + min + "分" + sec + "秒";    }    /**     * 两个时间相差距离多少天     *     * @param str1 时间参数 1 格式:1990-01-01 12:00:00     * @param str2 时间参数 2 格式:2009-01-01 12:00:00     * @return long[] 返回值为:{天, 时, 分, 秒}     */    public static long getDistanceDay(String str1, String str2) {        DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");        Date one;        Date two;        long day = 0;        try {            one = df.parse(str1);            two = df.parse(str2);            long time1 = one.getTime();            long time2 = two.getTime();            long diff;            if (time1 < time2) {                diff = time2 - time1;                day = diff / (24 * 60 * 60 * 1000);            }        } catch (ParseException e) {            e.printStackTrace();        }        return day;    }    /**     * 传递一个时间进来,对传进来的时间做修改(增加)然后范围String 字符串     *     * @param time    2017-08-12 15:34:22     * @param addDays 3     * @return     */    public static String chengTimeAdd(String time, int addDays) {        if (time == null || time.equals("")) {            return "时间转换失败";        }        DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");        try {            Date parse = df.parse(time);            long newTime = parse.getTime() + addDays * 24 * 60 * 60 * 1000;            SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");            return formatter.format(new Date(newTime));        } catch (ParseException e) {            e.printStackTrace();            return "时间转换异常";        }    }    /**     * @param str1 时间参数 1 格式:1990-01-01 12:00:00     * @param str2 时间参数 2 格式:2009-01-01 12:00:00     * @return long[] 返回值为:{天, 时, 分, 秒}     */    public static boolean isSameDay(String str1, String str2) {        Calendar cal1 = Calendar.getInstance();        Calendar cal2 = Calendar.getInstance();        cal1.setTime(getDateFromAllNumStr(str1));        cal2.setTime(getDateFromAllNumStr(str2));        boolean isScameYear = cal1.get(Calendar.YEAR) == cal2.get(Calendar.YEAR);        boolean isScameMonth = isScameYear && cal1.get(Calendar.MONTH) == cal2.get(Calendar.MONTH);        boolean isScameDay = isScameMonth && cal1.get(Calendar.DAY_OF_MONTH) == cal2.get(Calendar.DAY_OF_MONTH);        return isScameDay;    }    /**     * 判断当前时间是否在计划截至时间+72小时的倒数24小时内     * 传进来的是截至时间(没加72的)     */    public static boolean isNeed24(String time) {        String endTime = chengTimeAdd(time, 3);//已经加了72小时的时间        String currentTime = getCurrentTimeSeconds();//当前时间        DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");        Date one;        Date two;        try {            one = df.parse(endTime);            two = df.parse(currentTime);            long time1 = one.getTime();            long time2 = two.getTime();            if (time2 - time1 <= 0) {                long day = (time1 - time2) / (24 * 60 * 60 * 1000);                return day == 0;            } else {                Logger.i(TAG, "说明是截至时间+72小时已经过了");                return false;            }        } catch (ParseException e) {            e.printStackTrace();        }        return false;    }    /**     * 判断当前计划有没有超过72小时     * 返回true代表不可以上传,因为超过了72小时     * false为可以上传     */    public static boolean currentPlanCanUpload(String time) {        String endTime = chengTimeAdd(time, 3);//已经加了72小时的时间        String currentTime = getCurrentTimeSeconds();//当前时间        DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");        Date one;        Date two;        try {            one = df.parse(endTime);            two = df.parse(currentTime);            long end = one.getTime();            long current = two.getTime();            if (current - end > 0)                return true;        } catch (ParseException e) {            e.printStackTrace();        }        return false;    }    /**     * 判断有没有超过截至时间,这里传进来的时间是已经了了72小时的     *     * @param endTime     * @return     */    public static boolean currentPlanCanUpload2(String endTime) {        String currentTime = getCurrentTimeSeconds();//当前时间        DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");        Date one;        Date two;        try {            one = df.parse(endTime);            two = df.parse(currentTime);            long end = one.getTime();            long current = two.getTime();            if (current - end > 0)                return true;        } catch (ParseException e) {            e.printStackTrace();        }        return false;    }    /**     * 判断传进来的后面一个时间(str2)是否比前面时间(str1)大     *     * @param str1     * @param str2     * @return     */    public static boolean isOver(String str1, String str2) {        DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");        Date one;        Date two;        try {            one = df.parse(str1);            two = df.parse(str2);            long time1 = one.getTime();            long time2 = two.getTime();            if (time1 < time2) {                return true;            } else {                return false;            }        } catch (ParseException e) {            e.printStackTrace();        }        return false;    }    /**     * 传入一个long类型的时间,转换成02:18:34格式的时间长度。用来处理     * 语音长度和视频长度很合适。     * @param beginTime     * @param endTime     * @return     */    public static String convertTime(long beginTime, long endTime) {        return String.format("%02d:%02d:%02d", (endTime - beginTime) / 1000 / 60 / 60,                (endTime - beginTime) / 1000 / 60 % 60,                (endTime - beginTime) / 1000 % 60);    }}



会持续增加。