package com.abc.Utils;
import android.text.TextUtils;
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.List;
public class DateTimeUtil {
/**
* 获取Date类型yyyy-MM-dd格式的当前时间
*
* @return Date
*/
public static Date getCurrentDate() {
Date date = new Date();
DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
String dateStr = format.format(date);
Date curDay = null;
try {
curDay = format.parse(dateStr);
} catch (ParseException e) {
Logger.e(e.getMessage(), e.toString());
}
return curDay;
}
/**
* 获得指定月份的,月末日期
*
* @param date 指定日期
* @return String
*/
public static String getMonthEndStringDateByMonth(String date, String dateFormat) {
Calendar c = Calendar.getInstance();
c.setTime(transformStringToDate(date, dateFormat));
c.set(Calendar.DAY_OF_MONTH, c.getActualMaximum(Calendar.DAY_OF_MONTH));
return transformDateToString(c.getTime(), dateFormat);
}
/**
* 获取当前月份的天数
*
* @return Integer
*/
public static Integer getCurrentMothDays(){
Date currentDate = getCurrentDate();
String currentDateStr = transformDateToString(currentDate, "yyyy-MM-dd");
return getMonthDays(currentDateStr);
}
/**
* 获取指定月份的天数
*
* @param date 指定日期
* @return Integer
*/
public static Integer getMonthDays(String date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(transformStringToDate(date, "yyyy-MM-dd"));
//把日期设置为当月第一天
calendar.set(Calendar.DATE, 1);
//日期回滚一天,也就是最后一天
calendar.roll(Calendar.DATE, -1);
int maxDate = calendar.get(Calendar.DATE);
return maxDate;
}
/**
* 将Date类型转换为日期字符串
*
* @param date 日期字符串
* @param dateFormat 日期格式
* @return dateStr
*/
public static String transformDateToString(Date date, String dateFormat) {
if (date == null || TextUtils.isEmpty(dateFormat)) {
return "";
}
DateFormat format = new SimpleDateFormat(dateFormat);
return format.format(date);
}
/**
* 将日期字符串转换为Date类型
* String类型的日期格式和要转化的format格式必须一样
*
* @param dateStr 日期字符串
* @param dateFormat 日期格式 yyyy-MM-dd
* @return date
*/
public static Date transformStringToDate(String dateStr, String dateFormat) {
Date date = null;
DateFormat format = new SimpleDateFormat(dateFormat);
try {
date = format.parse(dateStr);
} catch (ParseException e) {
Logger.e(e.getMessage(), e.toString());
}
return date;
}
/**
* 获取某日期区间的所有日期 日期倒序
*
* @param startDate 开始日期
* @param endDate 结束日期
* @param dateFormat 日期格式
* @return 区间内所有日期
*/
public static List<String> getPerDaysByStartAndEndDate(String startDate, String endDate, String dateFormat) {
DateFormat format = new SimpleDateFormat(dateFormat);
try {
Date sDate = format.parse(startDate);
Date eDate = format.parse(endDate);
long start = sDate.getTime();
long end = eDate.getTime();
if (start > end) {
return null;
}
Calendar calendar = Calendar.getInstance();
calendar.setTime(eDate);
List<String> res = new ArrayList<String>();
while (end >= start) {
res.add(format.format(calendar.getTime()));
calendar.add(Calendar.DAY_OF_MONTH, -1);
end = calendar.getTimeInMillis();
}
return res;
} catch (ParseException e) {
Logger.e(e.getMessage(), e.toString());
}
return null;
}
/**
* 获取某日期区间的所有12月31日的日期 日期倒序
*
* @param startDate 开始日期 yyyy-MM-dd
* @param endDate 结束日期 yyyy-MM-dd
* @return 区间内所有日期
*/
public static List<String> getPerYearByStartAndEndDate(String startDate, String endDate) {
String start = startDate.substring(0, startDate.indexOf("-"));
String end = endDate.substring(0, endDate.indexOf("-"));
int s = Integer.parseInt(start);
int e = Integer.parseInt(end);
if (!(end + "-12-31").equals(endDate)) {
e--;
}
List<String> res = new ArrayList<String>();
while (e >= s) {
res.add(e + "-12-31");
e--;
}
return res;
}
/**
* 获取某日期区间的年份
*
* @param startDate 开始日期 yyyy
* @param endDate 结束日期 yyyy
* @return 区间内所有日期
*/
public static List<String> getYearsByStartAndEndDate(String startDate, String endDate) {
Integer s = Integer.parseInt(startDate);
Integer e = Integer.parseInt(endDate);
List<String> res = new ArrayList<String>();
while (e >= s) {
res.add(e.toString());
e--;
}
return res;
}
/**
* 将时间戳转换为时间
*
* @param s 时间戳
* @return "yyyy-MM-dd HH:mm:ss"
*/
public static String stampToDate(String s) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
long lt = new Long(s);
Date date = new Date(lt);
String res = simpleDateFormat.format(date);
return res;
}
/**
* 获取传入时间某几年之前的日期
*
* @param date 指定日期
* @param someYear 某几年
* @return String
*/
public static String getLastSomeYear(String date, Integer someYear) {
Integer lastSomeYear = Integer.parseInt(date.substring(0, 4)) - someYear;
date = lastSomeYear + date.substring(4);
return date;
}
/**
* 获取指定dateFormat格式的date,某几个月之前的日期
*
* @param date 传入日期
* @param dateFormat 日期格式
* @param someMonth 某几个月
* @return Date
*/
public static Date getLastSomeMonth(String date, String dateFormat, Integer someMonth) {
SimpleDateFormat format = new SimpleDateFormat(dateFormat);
Calendar c = Calendar.getInstance();
c.setTime(transformStringToDate(date, dateFormat));
//得到前几个月
c.add(Calendar.MONTH, -(someMonth));
Date time = transformStringToDate(format.format(c.getTime()), dateFormat);
return time;
}
/**
* 功能描述:时间相减得到天数
*
* @param beginDateStr 开始日期
* @param endDateStr 结束日期
* @return long
*/
public static long getDaySub(String beginDateStr, String endDateStr) {
long day = 0;
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Date beginDate;
Date endDate;
try {
beginDate = format.parse(beginDateStr);
endDate = format.parse(endDateStr);
day = (endDate.getTime() - beginDate.getTime()) / (24 * 60 * 60 * 1000);
} catch (ParseException e) {
Logger.e(e.getMessage(), e.toString());
}
return day;
}
/**
* 比较日期大小
*
* @param DATE1 第一个时间
* @param DATE2 第二个时间
* @param dateFormat 日期格式
* @return Integer null日期格式有误,1:第一个日期大,0:两个日期一样,-1:第二个日期大
*/
public static Integer compareDate(String DATE1, String DATE2, String dateFormat) {
DateFormat df = new SimpleDateFormat(dateFormat);
try {
Date dt1 = df.parse(DATE1);
Date dt2 = df.parse(DATE2);
if (dt1.getTime() > dt2.getTime()) {
return 1;
} else if (dt1.getTime() < dt2.getTime()) {
return -1;
} else {
return 0;
}
} catch (Exception e) {
Logger.e(e.toString(), e.toString());
}
return null;
}
}
Android 有关时间日期工具类
最新推荐文章于 2023-04-23 16:25:14 发布