Android 时间对象操作工具类

开发过程中,用到的一些比较有用的时间处理方法封装。

import android.text.TextUtils;import java.math.BigDecimal;import java.text.DecimalFormat;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Calendar;import java.util.Date;import java.util.List;/** * @author anothersunset * @create 2020/7/23 * @Describe 时间操作工具类 */public class DateFormatUtil {/**     * 时间戳转日期     *     * @param ms     * @return     */    public static String transForDateStr(Integer ms) {        if (ms == null) {            ms = 0;        }        if (ms == 0) {            return "";        }        long msl = (long) ms * 1000;        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");        Date temp = null;        if (ms != null) {            return sdf.format(msl);        }        return "";    }  /**     * 日期转时间戳     *     * @param date     * @return     */    public static Integer transForMilliSecond(Date date) {        if (date == null) return null;        return (int) (date.getTime() / 1000);    }    /**     * 获取当前时间戳     *     * @return     */    public static Integer currentTimeStamp() {        return (int) (System.currentTimeMillis() / 1000);    }   /**     * 日期字符串转时间戳     *     * @param dateStr     * @return     */    public static Integer transForMilliSecond(String dateStr, String format) {        if (TextUtils.isEmpty(dateStr)) {            return 0;        }        Date date = DateFormatUtil.formatDate(dateStr, format);        return date == null ? null : DateFormatUtil.transForMilliSecond(date);    }       /**     * 时间戳格式化输出     *     * @param ms     时间戳     * @param format 格式化     * @return     */    public static String transForDate(Integer ms, String format) {        String str = "";        if (ms != null) {            long msl = (long) ms * 1000;            SimpleDateFormat sdf = new SimpleDateFormat(format);            if (!ms.equals(0)) {                try {                    str = sdf.format(msl);                } catch (Exception e) {                    e.printStackTrace();                }            }        }        return str;    } /**     * 计算两个日期之间差的天数     *     * @param ts1 时间戳1     * @param ts2 时间戳2     * @return     */    public static int caculate2Days(Integer ts1, Integer ts2) {        Date firstDate = DateFormatUtil.transForDate(ts1);        Date secondDate = DateFormatUtil.transForDate(ts2);        Calendar calendar = Calendar.getInstance();        calendar.setTime(firstDate);        int dayNum1 = calendar.get(Calendar.DAY_OF_YEAR);        calendar.setTime(secondDate);        int dayNum2 = calendar.get(Calendar.DAY_OF_YEAR);        return Math.abs(dayNum1 - dayNum2);    } /**     * 获取传入时间和当前时间的时间差     *     * @return     */    public static Long getTimediff(int timeStamp) {        Date d1 = DateFormatUtil.transForDate(timeStamp);        Date today = new Date();        if (d1.getTime() < today.getTime()) {            return null;        }        return (d1.getTime() - today.getTime()) / 1000;    }    /**     * 当前时间加一年     */    public static String addYear(int startTime) {        Date firstDate = DateFormatUtil.transForDate(startTime);        Calendar calendar = Calendar.getInstance();        calendar.setTime(firstDate);        calendar.add(Calendar.YEAR, 1);        String d1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(calendar.getTime());        return d1;    } /**     * 计算当前时间差距     *     * @param beginTime s     * @return     */    public static String caculateTime(int beginTime) {        /// 时间戳转日期        /// 刚刚(1分钟内)        /// x分钟前 (1小时内)        /// x小时前 (1天内)        /// 昨天 HH:mm        /// 前天 HH:mm        /// x天前 (本月内)        /// MM-dd (本年内且非本月)        /// yyyy-MM-dd (非本年)        //秒数        // 异常数据        if (beginTime == 0) {            return "";        }        long now = currentTimeStamp();        long second = now - beginTime;        long minute = second / 60;        long hour = minute / 60;        //今天0点        long zero = now - (now + 8 * 3600) % (60 * 60 * 24);//今天零点零分零秒的毫秒数        if (beginTime >= zero) {            //当天            // 先判断是否 > 1h            if (hour > 0) {                return hour + "小时前";            } else {                // 判断 > 1m                if (minute > 0) {                    return minute + "分钟前";                } else {                    return "刚刚";                }            }        } else {            long beginTimeL = beginTime;            beginTimeL *= 1000L;            //今天之前            //1.昨天之后            if (beginTime >= (zero - (3600 * 24))) {                SimpleDateFormat format = new SimpleDateFormat("昨天 HH:mm");                return format.format(new Date(beginTimeL));            } else if (beginTime >= zero - (3600 * 48)) {                //前天之后                SimpleDateFormat format = new SimpleDateFormat("前天 HH:mm");                return format.format(new Date(beginTimeL));            } else {                //判断是否是本月                Calendar c = Calendar.getInstance();                //设置为1号,当前日期既为本月第一天                c.set(Calendar.DAY_OF_MONTH, 1);                //将小时至0                c.set(Calendar.HOUR_OF_DAY, 0);                //将分钟至0                c.set(Calendar.MINUTE, 0);                //将秒至0                c.set(Calendar.SECOND, 0);                //将毫秒至0                c.set(Calendar.MILLISECOND, 0);                if (beginTimeL >= c.getTimeInMillis()) {                    //本月内//                    return (hour / 24 + (hour%24 == 0? 0 : 1)) + "天前";                    return hour / 24 + "天前";                } else {                    //设置为1月1号                    c.set(Calendar.MONTH, 1);                    //设置为1号,当前日期既为本月第一天                    c.set(Calendar.DAY_OF_MONTH, 1);                    //将小时至0                    c.set(Calendar.HOUR_OF_DAY, 0);                    //将分钟至0                    c.set(Calendar.MINUTE, 0);                    //将秒至0                    c.set(Calendar.SECOND, 0);                    //将毫秒至0                    c.set(Calendar.MILLISECOND, 0);                    if (beginTimeL >= c.getTimeInMillis()) {                        //本年内                        SimpleDateFormat format = new SimpleDateFormat("MM-dd");                        return format.format(new Date(beginTimeL));                    } else {                        //非本年                        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");                        return format.format(new Date(beginTimeL));                    }                }            }        }    } /**     * 获取某一年下半年的开始时间     *     * @return     */    public static Integer getHalfYearStartTime(String year) {        return transForMilliSecondByTim(year + "-07-01 00:00:00", "yyyy-MM-dd HH:mm:ss");    }   /**     * 某年某月的第一天     *     * @param year     * @param month     * @return     */    public static String getFisrtDayOfMonth(String year, String month) {        Calendar cal = Calendar.getInstance();        //设置年份        cal.set(Calendar.YEAR, Integer.parseInt(year.replace("年", "")));        //设置月份        cal.set(Calendar.MONTH, Integer.parseInt(month.replace("月", "")) - 1);        //获取某月最小天数        int firstDay = cal.getActualMinimum(Calendar.DAY_OF_MONTH);        //设置日历中月份的最小天数        cal.set(Calendar.DAY_OF_MONTH, firstDay);        //格式化日期        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");        String firstDayOfMonth = sdf.format(cal.getTime());        return firstDayOfMonth + " 00:00:00";    }  /**     *  某年某月的最后一天     *     * @param year     * @param month     * @return     */    public static String getLastDayOfMonth(String year, String month) {        Calendar cal = Calendar.getInstance();        //设置年份        cal.set(Calendar.YEAR, Integer.parseInt(year.replace("年", "")));        //设置月份        cal.set(Calendar.MONTH, Integer.parseInt(month.replace("月", "")) - 1);        //获取某月最小天数        int firstDay = cal.getActualMaximum(Calendar.DAY_OF_MONTH);        //设置日历中月份的最小天数        cal.set(Calendar.DAY_OF_MONTH, firstDay);        //格式化日期        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");        String firstDayOfMonth = sdf.format(cal.getTime());        return firstDayOfMonth + " 23:59:59";    } /**     * 计算两个时间差多少天     *     * @param startTime     * @param endTime     * @param format     * @return     */    public static int calcTime(int startTime, int endTime, String format) {        String str1 = transForDate(startTime, format);        String str2 = transForDate(endTime, format);        return differentDaysByMillisecond(DateFormatUtil.formatDate(str1, format), DateFormatUtil.formatDate(str2, format));    }}

更多相关文章

  1. 使Android原生时间选择器样式为滚轮
  2. (20120808)(01)android菜单与对话框--之日期及时间选择对话框
  3. Android中获取时间
  4. Android获取系统时间
  5. Android之日期及时间选择对话框
  6. Android自带Music播放器更新播放时间和进度条的方法
  7. Android 手机震动 设置震动时间
  8. Android 系统(194)---Android实践 -- 设置系统日期时间和时区
  9. Android触摸屏幕时间-android学习之旅(三)

随机推荐

  1. Linux 安装android
  2. Android HIDL学习(2) ---- HelloWorld
  3. 百度的Android招聘面试题
  4. Android 工具之hierarchyviewer
  5. Android客户端连接Struts2服务器,连接不上
  6. Android(安卓)Audio代码分析9 - AudioTra
  7. Android(安卓)Context getSystemService
  8. Android小项目之--电话与短信服务(附源码)
  9. 【多端应用开发系列1.1.1 —— Android:使
  10. 【笔记】Android上ROS开发介绍与安装简介