日期常用工具类记录

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);elseretStr = "" + 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;}
}