日期常用工具类记录

public class DateUtils {
    //获得当前时间天数
    public static int getCurrentDays() {
        Calendar now = Calendar.getInstance();
        int dayOfYear = now.get(Calendar.DAY_OF_YEAR);
        Log.e("TAG", "dayOfYear" + dayOfYear);
        return dayOfYear;
    }


    //转换视频时间
    public static String secToTime(int time) {
        String timeStr = null;
        int hour = 0;
        int minute = 0;
        int second = 0;
        if (time <= 0)
            return "00:00";
        else {
            minute = time / 60;
            if (minute < 60) {
                second = time % 60;
                timeStr = unitFormat(minute) + ":" + unitFormat(second);
            } else {
                hour = minute / 60;
                if (hour > 99)
                    return "99:59:59";
                minute = minute % 60;
                second = time - hour * 3600 - minute * 60;
                timeStr = unitFormat(hour) + ":" + unitFormat(minute) + ":"
                        + unitFormat(second);
            }
        }
        return timeStr;
    }

    public static String unitFormat(int i) {
        String retStr = null;
        if (i >= 0 && i < 10)
            retStr = "0" + Integer.toString(i);
        else
            retStr = "" + i;
        return retStr;
    }

    /**
     * 获取某个日期的10位时间戳,date格式yyyy-MM-dd-HH-mm-ss
     *
     * @param dateStr yyyy-MM-dd-HH-mm-ss
     * @return 时间戳
     */
    public static long getTimeStamp(String dateStr) {
        long timeStamp = 0;
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss", Locale.getDefault());
        try {
            Date date = format.parse(dateStr);
            timeStamp = date.getTime() / 1000;
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return timeStamp;
    }

    /**
     * 获取某个日期的10位时间戳,date格式yyyy-MM-dd
     *
     * @param dateStr yyyy-MM-dd
     * @return 时间戳
     */
    public static long getTimeStampDay(String dateStr) {
        long timeStamp = 0;
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault());
        try {
            Date date = format.parse(dateStr);
            timeStamp = date.getTime() / 1000;
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return timeStamp;
    }

    /**
     * 获取某个日期的10位时间戳,date格式format
     *
     * @param dateStr yyyy-MM-dd-HH-mm-ss
     * @return 时间戳
     */
    public static long getTimeStamp(String dateStr, String format) {
        long timeStamp = 0;
        SimpleDateFormat dataFormat = new SimpleDateFormat(format, Locale.getDefault());
        try {
            Date date = dataFormat.parse(dateStr);
            timeStamp = date.getTime() / 1000;
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return timeStamp;
    }

    /**
     * 十位时间戳转为格式化的时间字符串
     *
     * @param timeStamp 时间戳
     * @param formatStr 时间字符串格式
     * @return
     */
    public static String getFormatTimeStr(long timeStamp, String formatStr) {
        SimpleDateFormat format = new SimpleDateFormat(formatStr, Locale.getDefault());
        return format.format(new Date(timeStamp * 1000));
    }

    /**
     * 十三位时间戳转为格式化的时间字符串
     *
     * @param formatStr 时间字符串格式
     * @return
     */
    public static String getNowFormatTimeStr(String formatStr) {
        SimpleDateFormat format = new SimpleDateFormat(formatStr, Locale.getDefault());
        return format.format(new Date(System.currentTimeMillis()));
    }

    /**
     * 当前时间戳是否是今天之内
     *
     * @param timeStamp
     * @return
     */
    public static boolean isToday(long timeStamp) {
        Calendar current = Calendar.getInstance();

        Calendar today = Calendar.getInstance();
        today.set(Calendar.YEAR, current.get(Calendar.YEAR));
        today.set(Calendar.MONTH, current.get(Calendar.MONTH));
        today.set(Calendar.DAY_OF_MONTH, current.get(Calendar.DAY_OF_MONTH));
        today.set(Calendar.HOUR_OF_DAY, 0);
        today.set(Calendar.MINUTE, 0);
        today.set(Calendar.SECOND, 0);

        Calendar tomorrow = Calendar.getInstance();
        tomorrow.set(Calendar.YEAR, current.get(Calendar.YEAR));
        tomorrow.set(Calendar.MONTH, current.get(Calendar.MONTH));
        tomorrow.set(Calendar.DAY_OF_MONTH, current.get(Calendar.DAY_OF_MONTH) + 1);
        tomorrow.set(Calendar.HOUR_OF_DAY, 0);
        tomorrow.set(Calendar.MINUTE, 0);
        tomorrow.set(Calendar.SECOND, 0);

        current.setTimeInMillis(timeStamp * 1000);

        return current.after(today) && current.before(tomorrow);
    }

    /**
     * 根据时间戳获取星期几
     *
     * @param timeStamp 时间戳
     * @return 星期几
     */
    public static String getDayOfWeek(long timeStamp) {
        String dayOfWeek = "";
        Calendar calendar = Calendar.getInstance();
        calendar.setTimeInMillis(timeStamp * 1000);
        calendar.set(Calendar.HOUR_OF_DAY, 0);
        calendar.set(Calendar.MINUTE, 0);
        calendar.set(Calendar.SECOND, 0);
        calendar.set(Calendar.MILLISECOND, 0);
        switch (calendar.get(Calendar.DAY_OF_WEEK)) {
            case Calendar.MONDAY:
                dayOfWeek = "1";
                break;
            case Calendar.TUESDAY:
                dayOfWeek = "2";
                break;
            case Calendar.WEDNESDAY:
                dayOfWeek = "3";
                break;
            case Calendar.THURSDAY:
                dayOfWeek = "4";
                break;
            case Calendar.FRIDAY:
                dayOfWeek = "5";
                break;
            case Calendar.SATURDAY:
                dayOfWeek = "6";
                break;
            case Calendar.SUNDAY:
                dayOfWeek = "7";
                break;
        }
        return dayOfWeek;
    }

    /**
     * 根据今天的星期数字获取前七天的星期数据
     *
     * @param todayWeek 今天星期的数字
     * @return 星期几
     */
    public static List<String> getWeekData(String todayWeek) {
        List<String> weekList = new ArrayList<>();
        int todayWeekInt = Integer.parseInt(todayWeek);
        if (todayWeekInt == 7) {
            for (int i = 1; i <= 7; i++) {
                if (i == 7) {
                    weekList.add("今天");
                } else if (i == 6) {
                    weekList.add("昨天");
                } else {
                    weekList.add(getWeekStr(i));
                }
            }
        } else {
            for (int i = todayWeekInt + 1; i <= 7; i++) {
                weekList.add(getWeekStr(i));
            }

            for (int j = 1; j <= todayWeekInt; j++) {
                if (j == todayWeekInt) {
                    weekList.add("今天");
                } else if (j == todayWeekInt - 1) {
                    weekList.add("昨天");
                } else {
                    weekList.add(getWeekStr(j));
                }
            }
        }
        return weekList;
    }

    /**
     * 根据今天的星期数字星期文字
     *
     * @param week 星期的数字
     * @return 星期几
     */
    public static String getWeekStr(int week) {
        String weekStr = "";
        switch (week) {
            case 1:
                weekStr = "周一";
                break;
            case 2:
                weekStr = "周二";
                break;
            case 3:
                weekStr = "周三";
                break;
            case 4:
                weekStr = "周四";
                break;
            case 5:
                weekStr = "周五";
                break;
            case 6:
                weekStr = "周六";
                break;
            case 7:
                weekStr = "周日";
                break;
        }
        return weekStr;
    }

    /**
     * 获取某个月的天数
     *
     * @param year
     * @param month
     * @return
     */
    public static int getMonthDays(int year, int month) {
        if (month > 12) {
            month = 1;
            year += 1;
        } else if (month < 1) {
            month = 12;
            year -= 1;
        }
        int[] arr = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
        int days = 0;

        if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
            arr[1] = 29; // 闰年2月29天
        }

        try {
            days = arr[month - 1];
        } catch (Exception e) {
            e.getStackTrace();
        }

        return days;
    }

    /**
     * 获取某年某月第一天是星期几
     *
     * @param year
     * @param month
     * @return 已做处理,1-7对应周一至周日
     */
    public static int getFirstDayWeekOfMonth(int year, int month) {
        Calendar calendar = Calendar.getInstance();
        calendar.set(year, month - 1, 1);
        int week = calendar.get(Calendar.DAY_OF_WEEK) - 1;
        if (week == 0) {
            week = 7;
        }
        return week;
    }

    public static int getYear() {
        return Calendar.getInstance().get(Calendar.YEAR);
    }

    public static int getMonth() {
        return Calendar.getInstance().get(Calendar.MONTH) + 1;
    }

    public static int getDay() {
        return Calendar.getInstance().get(Calendar.DAY_OF_MONTH);
    }

    /**
     * 秒转为2小时30分49秒格式化显示
     */
    public static String transformTime(int totalSeconds) {
        int seconds = totalSeconds % 60;
        int minutes = (totalSeconds / 60) % 60;
        int hours = totalSeconds / 3600;

        if (hours > 0) {
            return String.format(Locale.US, "%d小时%d分%d秒", hours, minutes,
                    seconds).toString();
        } else if (minutes > 0) {
            return String.format(Locale.US, "%d分%d秒", minutes, seconds)
                    .toString();
        } else {
            return String.format(Locale.US, "%d秒", seconds)
                    .toString();
        }
    }

    /**
     * 秒转为2小时30分格式化显示
     */
    public static String transformTimeNoSec(int totalSeconds) {
        int minutes = (totalSeconds / 60) % 60;
        int hours = totalSeconds / 3600;

        if (hours > 0) {
            return String.format(Locale.US, "%d小时%d分", hours, minutes).toString();
        } else if (minutes > 0) {
            return String.format(Locale.US, "%d分", minutes).toString();
        } else {
            return "";
        }
    }

    /**
     * 显示视频时间,秒转为时分秒格式化显示
     */
    public static String generateTime(int totalSeconds) {
        int seconds = totalSeconds % 60;
        int minutes = (totalSeconds / 60) % 60;
        int hours = totalSeconds / 3600;

        if (hours > 0) {
            return String.format(Locale.US, "%02d:%02d:%02d", hours, minutes,
                    seconds).toString();
        } else {
            return String.format(Locale.US, "%02d:%02d", minutes, seconds)
                    .toString();
        }
    }

    /**
     * 分转为时和分字符串
     */
    public static String[] minToHour(int min) {
        int minutes = min % 60;
        int hours = min / 60;

        return new String[]{String.valueOf(hours), String.valueOf(minutes)};
    }

    /**
     * 评论时间线
     * @param timeStamp
     * @return
     */
    public static String getCommentTime(long timeStamp) {
        long passedSeconds = TokenStore.getTokenStore().getRequestTime() - timeStamp;
        String timePassStr = getFormatTimeStr(timeStamp, "yyyy-MM-dd HH:mm:ss");
        if (passedSeconds <= 0) {
            timePassStr = "刚刚发布";
        } else if (passedSeconds > 0 && passedSeconds < 60) {
            timePassStr = passedSeconds + "秒前";
        } else if (passedSeconds >= 60 && passedSeconds < 3600) {
            timePassStr = passedSeconds / 60 + "分钟前";
        } else if (passedSeconds >= 3600 && passedSeconds < 24 * 3600) {
            timePassStr = passedSeconds / 3600 + "小时前";
        } else if (passedSeconds >= 24 * 3600 && passedSeconds < 24* 3600 * 3) {
            timePassStr = passedSeconds / (3600 * 24) + "天前";
        } else if(passedSeconds >= 24* 3600 * 3 && passedSeconds < 24* 3600 * 30) {
            timePassStr = getFormatTimeStr(timeStamp, "MM-dd HH:mm:ss");
        }
        return timePassStr;
    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值