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;
}
}