前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java 相关时间工具类

Java 相关时间工具类

作者头像
先知先觉
发布2019-01-21 11:26:13
1.4K0
发布2019-01-21 11:26:13
举报
代码语言:javascript
复制
package com.cavytech.wear2.util;

import android.text.TextUtils;
import android.text.format.Time;
import android.util.Log;

import com.cavytech.wear2.entity.BandSleepStepBean;
import com.cavytech.wear2.entity.GetSleepBean;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * Created by LiBin on 2016/6/1.
 */
public class DateHelper {

    private static DateHelper util;

    public static long DATEMM = 86400L;

    public static DateHelper getInstance() {

        if (util == null) {
            util = new DateHelper();
        }
        return util;

    }
    private DateHelper() {
        super();
    }

    public SimpleDateFormat date_Formater_1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");


    public SimpleDateFormat date_Formater_2 = new SimpleDateFormat("yyyy-MM-dd");

    public Date getDate(String dateStr) {
        Date date = new Date();
        if (TextUtils.isEmpty(dateStr)) {
            return date;
        }
        try {
            date = date_Formater_1.parse(dateStr);
            return date;

        } catch (java.text.ParseException e) {
            e.printStackTrace();
        }
        return date;

    }

    public String getDataString_1(Date date) {
        if (date == null) {
            date = new Date();
        }
        String str = date_Formater_1.format(date);
        return str;

    }

    public String getDataString_2(Date date) {
        if (date == null) {
            date = new Date();
        }
        String str = date_Formater_2.format(date);
        return str;

    }

    /**
     * 将日期变成常见中文格式
     *
     * @param date
     * @return
     */
    public String getRencentTime(String date) {
        Date time = getDate(date);
        if (time == null) {
            return "一个月前";
        }
        String ftime = "";
        Calendar cal = Calendar.getInstance();

        String curDate = date_Formater_2.format(cal.getTime());
        String paramDate = date_Formater_2.format(time);
        if (curDate.equals(paramDate)) {
            int hour = (int) ((cal.getTimeInMillis() - time.getTime()) / 3600000);
            if (hour == 0)
                ftime = Math.max(
                        (cal.getTimeInMillis() - time.getTime()) / 60000, 1)
                        + "分钟前";
            else
                ftime = hour + "小时前";
            return ftime;
        }

        long lt = time.getTime() / 86400000;
        long ct = cal.getTimeInMillis() / 86400000;
        int days = (int) (ct - lt);
        if (days == 0) {
            int hour = (int) ((cal.getTimeInMillis() - time.getTime()) / 3600000);
            if (hour == 0)
                ftime = Math.max(
                        (cal.getTimeInMillis() - time.getTime()) / 60000, 1)
                        + "分钟前";
            else
                ftime = hour + "小时前";
        } else if (days == 1) {
            ftime = "昨天";
        } else if (days == 2) {
            ftime = "前天";
        } else if (days > 2 && days <= 10) {
            ftime = days + "天前";
        } else if (days > 10) {
            ftime = "一个月前";
        } else {
            ftime = date_Formater_2.format(time);
        }
        return ftime;
    }

    /**
     * 日期时间格式转换
     *
     * @param typeFrom
     *            原格式
     * @param typeTo
     *            转为格式
     * @param value
     *            传入的要转换的参数
     * @return
     */
    public String stringDateToStringData(String typeFrom, String typeTo,
                                         String value) {
        String re = value;
        SimpleDateFormat sdfFrom = new SimpleDateFormat(typeFrom);
        SimpleDateFormat sdfTo = new SimpleDateFormat(typeTo);

        try {
            re = sdfTo.format(sdfFrom.parse(re));
        } catch (java.text.ParseException e) {
            e.printStackTrace();
        }
        return re;
    }

    /**
     * 得到这个月有多少天
     *
     * @param year
     * @param month
     * @return
     */
    public int getMonthLastDay(int year, int month) {
        if (month == 0) {
            return 0;
        }
        Calendar a = Calendar.getInstance();
        a.set(Calendar.YEAR, year);
        a.set(Calendar.MONTH, month - 1);
        a.set(Calendar.DATE, 1);// 把日期设置为当月第一天
        a.roll(Calendar.DATE, -1);// 日期回滚一天,也就是最后一天
        int maxDate = a.get(Calendar.DATE);
        return maxDate;
    }

    /**
     * 得到年份
     *
     * @return
     */
    public String getCurrentYear() {
        Calendar c = Calendar.getInstance();
        return c.get(Calendar.YEAR) + "";
    }

    /**
     * 得到月份
     *
     * @return
     */
    public String getCurrentMonth() {
        Calendar c = Calendar.getInstance();
        return (c.get(Calendar.MONTH) + 1) + "";
    }

    /**
     * 获得当天的日期
     *
     * @return
     */
    public String getCurrDay() {
        Calendar c = Calendar.getInstance();
        return c.get(Calendar.DAY_OF_MONTH) + "";
    }

    /**
     * 得到几天/周/月/年后的日期,整数往后推,负数往前移动
     *
     * @param calendar
     * @param calendarType
     *            Calendar.DATE,Calendar.WEEK_OF_YEAR,Calendar.MONTH,Calendar.
     *            YEAR
     * @param next
     * @return
     */
    public String getDayByDate(Calendar calendar, int calendarType, int next) {

        calendar.add(calendarType, next);
        Date date = calendar.getTime();
        String dateString = date_Formater_1.format(date);
        return dateString;

    }

    /**
     * 可以获取后退N天的日期
     * 格式:传入2 得到2014-11-30
     * @param backDay
     * @return String
     */
    public String getStrDate(String backDay) {
        Calendar calendar = Calendar.getInstance() ;
        calendar.add(Calendar.DATE, Integer.parseInt(backDay));
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd") ;
        String back = sdf.format(calendar.getTime()) ;
        return back ;
    }
    /**
     * 根据结束时间以及间隔差值,求符合要求的日期集合;
     *
     * @param endTime
     * @param interval
     * @param isEndTime
     * @return
     */
    public static Map<String, String> getErrandDate(String endTime, Integer interval, boolean isEndTime) {
        Map<String, String> result = new HashMap<String, String>();
        if (interval == 0 || isEndTime) {
            if (isEndTime)
                result.put(endTime, endTime);
        }
        if (interval > 0) {
            int begin = 0;
            for (int i = begin; i < interval; i++) {
                endTime = givedTimeToBefer(endTime, DATEMM, "yyyy-MM-dd");
                result.put(endTime, endTime);
            }
        }
        return result;
    }

    /**
     * 日期转换成Calendar
     */
    public static Calendar convertDateToCalendar(Date date){
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        return cal;

    }

    /**

     * 对一个日期进行偏移

     *

     * @param date

     *            日期

     * @param offset

     *            偏移两

     * @return 偏移后的日期

     */

    public static Date addDayByDate(Date date, int offset) {

        Calendar cal = Calendar.getInstance();

        cal.setTime(date);

        int day = cal.get(Calendar.DAY_OF_YEAR);

        cal.set(Calendar.DAY_OF_YEAR, day + offset);

        return cal.getTime();
    }

    /**获得指定日期的年份
     *
     * @param date
     * @return
     */

    public static int getYearByDate(Date date) {

        Calendar cal = Calendar.getInstance();

        cal.setTime(date);

        return cal.get(Calendar.YEAR);

    }

    /**
     * 获得指定日期的月份
     * @param date
     * @return
     */

    public static int getMonthByDate(Date date) {

        Calendar cal = Calendar.getInstance();

        cal.setTime(date);

        return cal.get(Calendar.MONTH);

    }

    /**
     * 根据数组得到小时
     */
    public static ArrayList exchangeHourData(ArrayList<BandSleepStepBean> a){

        int b = a.size()/6;
        int c = a.size()%6;

        Log.e("TAg",b+"===j===");
        Log.e("TAg",c+"===余数===");

        /**
         *转换小时
         */
        ArrayList arrayList = new ArrayList();//转换小时后的集合
        for(int i = 0 ;i<b ; i++){

            int l = 0;
            for(int j = 0 ;j<6;j++){
                String k =a.get((i)*6+j).getCountDate();
                Log.e("TAg",k+"++++;;;;;;;;;;+");
                l = l +Integer.valueOf(k);
            }
            Log.e("TAg",l+"------每小时数据");
            arrayList.add(l+"");
        }
        int x = 0;
        for(int i = 0 ; i < c;i++){
            String y  =a.get(b*6+i).getCountDate();
            x = x+Integer.valueOf(y);
        }
        Log.e("TAg",x+"-------");
        arrayList.add(x+"");

        for(int i = 0 ; i < arrayList.size();i++){
            Log.e("TAg",arrayList.get(i)+"------arrayList"+i+"小时");
        }

        return arrayList;

    }

    /**
     * 将得到的数组对应时间
     */
    public static ArrayList setDataTime(ArrayList<BandSleepStepBean> a){
        ArrayList arrayList = new ArrayList();
        return arrayList;
    }

    //得到String系统时间
    public static String getDateString() {
        String todayData = "";

        Time time = new Time("GMT+8");
        time.setToNow();
        int year = time.year;
        int month = time.month;
        int day = time.monthDay;
        int minute = time.minute;
        int hour = time.hour;
        int sec = time.second;
        todayData = year + "-" + month + "-" + day;

        //格式可以更改
        SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd");
        String date = sDateFormat.format(new java.util.Date());
        return date;

    }

    /**
     * 手环数组转对应日期
     */
    public static String timeExchangeData1(int a){
        DateHelper dateHelper = DateHelper.getInstance();

        String date = dateHelper.getDateString();

        String ss = "";

        int b = a/6;
        int c = a%6;

        Log.e("TAG",b+"----商");
        Log.e("TAG",c+"====余数");

        String hour ="";
        String minute =c+"0";
        if(b<= 9){
            hour = "0"+b;
        }else{
            hour = b+"";
        }

        ss = date+" "+hour+":"+minute+":"+"00";

        return ss;


    }

    /**
     * 手环数组转对应日期
     * bancDate 相差几天
     */
    public static String timeExchangeData2 (int a,String bancDate){

        DateHelper dateHelper = DateHelper.getInstance();

        //String date = dateHelper.getDateString();

        String date = dateHelper.getStrDate(bancDate);

        String ss = "";

        int b = a/6;
        int c = a%6;

        String hour ="";
        String minute =c+"0";
        if(b<= 9){
            hour = "0"+b;
        }else{
            hour = b+"";
        }

        ss = date+" "+hour+":"+minute+":"+"00";

        return ss;

    }

    /**
     * 去除计步手环零数据
     * @param arrayListYesterday
     * @return
     */
    public static ArrayList addsteps(ArrayList<BandSleepStepBean> arrayListYesterday) {
        ArrayList<BandSleepStepBean> list = new ArrayList<BandSleepStepBean>();
        for (int i = 0; i < arrayListYesterday.size(); i++) {
            if(arrayListYesterday.get(i).getStepCount()!=0){
                list.add(arrayListYesterday.get(i));
            }
        }
        return list;
    }


    /**
     * 去除tittle手环零数据
     * @param arrayListYesterday
     * @return
     */
    public static ArrayList addTitlts(ArrayList<GetSleepBean.SleepListBean> arrayListYesterday) {
        ArrayList<GetSleepBean.SleepListBean> list = new ArrayList<GetSleepBean.SleepListBean>();
        for (int i = 0; i < arrayListYesterday.size(); i++) {
            if(arrayListYesterday.get(i).getRollCount()!=0){
                list.add(arrayListYesterday.get(i));
            }
        }
        return list;
    }

    private static Calendar gregorianCalendar = Calendar.getInstance();

    /**
     * 获取日期星期一日期
     *
     * @param
     * @return date
     */
    public static Date getFirstDayOfWeek(Date date) {
        if (date == null) {
            return null;
        }
        gregorianCalendar.setFirstDayOfWeek(Calendar.MONDAY);
        gregorianCalendar.setTime(date);
        gregorianCalendar.set(Calendar.DAY_OF_WEEK, gregorianCalendar.getFirstDayOfWeek()); // Monday
        return gregorianCalendar.getTime();
    }

    /**
     * 获取日期星期天日期
     *
     * @param
     * @return date
     */
    public static Date getLastDayOfWeek(Date date) {
        if (date == null) {
            return null;
        }
        gregorianCalendar.setFirstDayOfWeek(Calendar.MONDAY);
        gregorianCalendar.setTime(date);
        gregorianCalendar.set(Calendar.DAY_OF_WEEK, gregorianCalendar.getFirstDayOfWeek() + 6); // Monday
        return gregorianCalendar.getTime();
    }

    public Date getDate2(String dateStr) {
        Date date = new Date();
        if (TextUtils.isEmpty(dateStr)) {
            return date;
        }
        try {
            date = date_Formater_2.parse(dateStr);
            return date;

        } catch (java.text.ParseException e) {
            e.printStackTrace();
        }
        return date;

    }

    /**
     *得到当前日期的截取年,月,日
     *i = 0年;i=1月;i=2日;
     */

    public String subStringData(int i,String data){
        String[] split = data.split("-");

        return split[i];

    }

    /**
     * 去除月,日前面的0
     */

    public String deleteDate(String date){
        if(date.substring(0,1).equals("0")){
            Log.e("TAG",date.substring(1,2));
            return date.substring(1, 2);
        }else{
            return date;
        }
    }

    public static ArrayList removeDuplicateWithOrder(List list) {
        Set set = new HashSet();
        List newList = new ArrayList();
        for (Iterator iter = list.iterator(); iter.hasNext();) {
            Object element = iter.next();
            if (set.add(element))
                newList.add(element);
        }
        list.clear();
        list.addAll(newList);
        System.out.println( " remove duplicate " + list);
        return null;
    }

    /**
     * 获取指定月的第一天
     *
     * @param date
     * @return
     */
    public static Date getFirstDayOfMonth(Date date) {
        gregorianCalendar.setTime(date);
        gregorianCalendar.set(Calendar.DAY_OF_MONTH, 1);
        return gregorianCalendar.getTime();
    }

    /**
     * 获取指定月的最后一天
     *
     * @param date
     * @return
     */
    public static Date getLastDayOfMonth(Date date) {
        gregorianCalendar.setTime(date);
        gregorianCalendar.set(Calendar.DAY_OF_MONTH, 1);
        gregorianCalendar.add(Calendar.MONTH, 1);
        gregorianCalendar.add(Calendar.DAY_OF_MONTH, -1);
        return gregorianCalendar.getTime();
    }

    /**
     * 可以获取后退N天的日期 重点:指定日期
     * 格式:传入2 得到2014-11-30
     *
     * @param backDay 指定的日期 正数向前 负数向后
     * @return String 传入的时间 YYYY-MM-dd
     */
    public String getStrDate2(int backDay, String dataString) {
        Date date1 = getInstance().getDate2(dataString);

        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date1);
        calendar.add(Calendar.DATE, backDay);
        Date date2= calendar.getTime();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");


        String back = sdf.format(date2);
        return back;
    }

    /**
     *
     * 求某一个时间向前多少秒的时间(currentTimeToBefer)---OK
     *
     * @param givedTime
     *            给定的时间
     * @param interval
     *            间隔时间的毫秒数;计算方式 :n(天)*24(小时)*60(分钟)*60(秒)(类型)
     * @param format_Date_Sign
     *            输出日期的格式;如yyyy-MM-dd、yyyyMMdd等;
     */
    public static String givedTimeToBefer(String givedTime, long interval, String format_Date_Sign) {
        String tomorrow = null;
        try {
            SimpleDateFormat sdf = new SimpleDateFormat(format_Date_Sign);
            Date gDate = sdf.parse(givedTime);
            long current = gDate.getTime(); // 将Calendar表示的时间转换成毫秒
            long beforeOrAfter = current - interval * 1000L; // 将Calendar表示的时间转换成毫秒
            Date date = new Date(beforeOrAfter); // 用timeTwo作参数构造date2
            tomorrow = new SimpleDateFormat(format_Date_Sign).format(date);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return tomorrow;
    }

    /**
<<<<<<< HEAD
     * 比较两个日期先后
     */

    public static boolean compare_date(String DATE1, String DATE2) {

        DateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        boolean b =false;
        try {
            Date dt1 = df.parse(DATE1);
            Date dt2 = df.parse(DATE2);
            if (dt1.getTime() >= dt2.getTime()) {
                b = true;
            } else if (dt1.getTime() < dt2.getTime()) {
                b = false;
            }
        } catch (Exception exception) {
            exception.printStackTrace();
        }
        return b;
    }

    public static String getSystemDateString() {
        String todayData = "";

        Time time = new Time("GMT+8");
        time.setToNow();
        int year = time.year;
        int month = time.month;
        int day = time.monthDay;
        int minute = time.minute;
        int hour = time.hour;
        int sec = time.second;
        SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        String date = sDateFormat.format(new java.util.Date());
        return date;
    }
     /**
     * 根据日期获得星期
     * @param date
     * @return String
     */
    public static String getWeekOfDateString(Date date) {
        String[] weekDaysName = { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" };
        String[] weekDaysCode = { "0", "1", "2", "3", "4", "5", "6" };
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        int intWeek = calendar.get(Calendar.DAY_OF_WEEK) - 1;
        return weekDaysCode[intWeek];
    }

    /**
     * 根据日期获得星期
     * @param date
     * @return int
     */
    public static int getWeekOfDateInt(Date date) {
        int[] weekDaysCode = { 0,1,2,3,4,5,6 };
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        int intWeek = calendar.get(Calendar.DAY_OF_WEEK) - 1;
        return weekDaysCode[intWeek];
    }

    /**
     * 根据给定某个月日期得到之间差得天数
     * @param endTime
     * @param startTime
     * @return
     */
    public  int getMonthDay(String endTime,String startTime){
        int i = 0;
        try {
            i = Integer.valueOf(endTime.substring(8,10)).intValue() - Integer.valueOf(startTime.substring(8,10)).intValue();
        } catch (NumberFormatException e) {
            e.printStackTrace();
        }

        return i+1;
    }

    /**
     * 分钟转换hour
     * @param minutes
     * @return
     */
    public int exchangeHour(int minutes){
        int hour = 344/60;

        return hour;
    }

    /**
     * 分钟转换minute
     * @param minutes
     * @return
     */
    public int exchangeMinute(int minutes){
        int minute = 344%60;

        return minute;
    }

}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016年06月14日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档