import com.alibaba.fastjson.JSON;
import java.sql.Timestamp;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
public class NewDateUtil {
// date类型转换为String类型
// formatType格式为yyyy-MM-dd HH:mm:ss//yyyy年MM月dd日 HH时mm分ss秒
// data Date类型的时间
public static String dateToString(Date data, String formatType) {
return new SimpleDateFormat(formatType).format(data);
}
// long类型转换为String类型
// currentTime要转换的long类型的时间
// formatType要转换的string类型的时间格式
public static String longToString(long currentTime, String formatType)
throws ParseException {
Date date = longToDate(currentTime, formatType); // long类型转成Date类型
String strTime = dateToString(date, formatType); // date类型转成String
return strTime;
}
// string类型转换为date类型
// strTime要转换的string类型的时间,formatType要转换的格式yyyy-MM-dd HH:mm:ss//yyyy年MM月dd日
// HH时mm分ss秒,
// strTime的时间格式必须要与formatType的时间格式相同
public static Date stringToDate(String strTime, String formatType)
throws ParseException {
SimpleDateFormat formatter = new SimpleDateFormat(formatType);
Date date = null;
date = formatter.parse(strTime);
return date;
}
// long转换为Date类型
// currentTime要转换的long类型的时间
// formatType要转换的时间格式yyyy-MM-dd HH:mm:ss//yyyy年MM月dd日 HH时mm分ss秒
public static Date longToDate(long currentTime, String formatType)
throws ParseException {
Date dateOld = new Date(currentTime); // 根据long类型的毫秒数生命一个date类型的时间
String sDateTime = dateToString(dateOld, formatType); // 把date类型的时间转换为string
Date date = stringToDate(sDateTime, formatType); // 把String类型转换为Date类型
return date;
}
// string类型转换为long类型
// strTime要转换的String类型的时间
// formatType时间格式
// strTime的时间格式和formatType的时间格式必须相同
public static long stringToLong(String strTime, String formatType)
throws ParseException {
Date date = stringToDate(strTime, formatType); // String类型转成date类型
if (date == null) {
return 0;
} else {
long currentTime = dateToLong(date); // date类型转成long类型
return currentTime;
}
}
// date类型转换为long类型
// date要转换的date类型的时间
public static long dateToLong(Date date) {
return date.getTime();
}
//获取当天的开始时间
public static Date getDayBegin() {
Calendar cal = new GregorianCalendar();
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
return cal.getTime();
}
//获取当天的结束时间
public static Date getDayEnd() {
Calendar cal = new GregorianCalendar();
cal.set(Calendar.HOUR_OF_DAY, 23);
cal.set(Calendar.MINUTE, 59);
cal.set(Calendar.SECOND, 59);
return cal.getTime();
}
//获取昨天的开始时间
public static Date getBeginDayOfYesterday() {
Calendar cal = new GregorianCalendar();
cal.setTime(getDayBegin());
cal.add(Calendar.DAY_OF_MONTH, -1);
return cal.getTime();
}
//获取昨天的结束时间
public static Date getEndDayOfYesterDay() {
Calendar cal = new GregorianCalendar();
cal.setTime(getDayEnd());
cal.add(Calendar.DAY_OF_MONTH, -1);
return cal.getTime();
}
//获取明天的开始时间
public static Date getBeginDayOfTomorrow() {
Calendar cal = new GregorianCalendar();
cal.setTime(getDayBegin());
cal.add(Calendar.DAY_OF_MONTH, 1);
return cal.getTime();
}
//获取明天的结束时间
public static Date getEndDayOfTomorrow() {
Calendar cal = new GregorianCalendar();
cal.setTime(getDayEnd());
cal.add(Calendar.DAY_OF_MONTH, 1);
return cal.getTime();
}
//获取本周的开始时间
@SuppressWarnings("unused")
public static Date getBeginDayOfWeek() {
Date date = new Date();
if (date == null) {
return null;
}
Calendar cal = Calendar.getInstance();
cal.setTime(date);
int dayofweek = cal.get(Calendar.DAY_OF_WEEK);
if (dayofweek == 1) {
dayofweek += 7;
}
cal.add(Calendar.DATE, 2 - dayofweek);
return getDayStartTime(cal.getTime());
}
//获取本周的结束时间
public static Date getEndDayOfWeek() {
Calendar cal = Calendar.getInstance();
cal.setTime(getBeginDayOfWeek());
cal.add(Calendar.DAY_OF_WEEK, 6);
Date weekEndSta = cal.getTime();
return getDayEndTime(weekEndSta);
}
//获取上周的开始时间
@SuppressWarnings("unused")
public static Date getBeginDayOfLastWeek() {
Date date = new Date();
if (date == null) {
return null;
}
Calendar cal = Calendar.getInstance();
cal.setTime(date);
int dayofweek = cal.get(Calendar.DAY_OF_WEEK);
if (dayofweek == 1) {
dayofweek += 7;
}
cal.add(Calendar.DATE, 2 - dayofweek - 7);
return getDayStartTime(cal.getTime());
}
//获取上周的结束时间
public static Date getEndDayOfLastWeek() {
Calendar cal = Calendar.getInstance();
cal.setTime(getBeginDayOfLastWeek());
cal.add(Calendar.DAY_OF_WEEK, 6);
Date weekEndSta = cal.getTime();
return getDayEndTime(weekEndSta);
}
//获取本月的开始时间
public static Date getBeginDayOfMonth() {
Calendar calendar = Calendar.getInstance();
calendar.set(getNowYear(), getNowMonth() - 1, 1);
return getDayStartTime(calendar.getTime());
}
//获取本月的结束时间
public static Date getEndDayOfMonth() {
Calendar calendar = Calendar.getInstance();
calendar.set(getNowYear(), getNowMonth() - 1, 1);
int day = calendar.getActualMaximum(5);
calendar.set(getNowYear(), getNowMonth() - 1, day);
return getDayEndTime(calendar.getTime());
}
//获取上月的开始时间
public static Date getBeginDayOfLastMonth() {
Calendar calendar = Calendar.getInstance();
calendar.set(getNowYear(), getNowMonth() - 2, 1);
return getDayStartTime(calendar.getTime());
}
//获取上月的结束时间
public static Date getEndDayOfLastMonth() {
Calendar calendar = Calendar.getInstance();
calendar.set(getNowYear(), getNowMonth() - 2, 1);
int day = calendar.getActualMaximum(5);
calendar.set(getNowYear(), getNowMonth() - 2, day);
return getDayEndTime(calendar.getTime());
}
//获取本年的开始时间
public static Date getBeginDayOfYear() {
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, getNowYear());
// cal.set
cal.set(Calendar.MONTH, Calendar.JANUARY);
cal.set(Calendar.DATE, 1);
return getDayStartTime(cal.getTime());
}
//获取本年的结束时间
public static Date getEndDayOfYear() {
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, getNowYear());
cal.set(Calendar.MONTH, Calendar.DECEMBER);
cal.set(Calendar.DATE, 31);
return getDayEndTime(cal.getTime());
}
//获取某个日期的开始时间
public static Timestamp getDayStartTime(Date d) {
Calendar calendar = Calendar.getInstance();
if (null != d) {
calendar.setTime(d);
}
calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
calendar.set(Calendar.MILLISECOND, 0);
return new Timestamp(calendar.getTimeInMillis());
}
//获取某个日期的结束时间
public static Timestamp getDayEndTime(Date d) {
Calendar calendar = Calendar.getInstance();
if (null != d) {
calendar.setTime(d);
}
calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), 23, 59, 59);
calendar.set(Calendar.MILLISECOND, 999);
return new Timestamp(calendar.getTimeInMillis());
}
//获取今年是哪一年
public static Integer getNowYear() {
Date date = new Date();
GregorianCalendar gc = (GregorianCalendar) Calendar.getInstance();
gc.setTime(date);
return Integer.valueOf(gc.get(1));
}
//获取本月是哪一月
public static int getNowMonth() {
Date date = new Date();
GregorianCalendar gc = (GregorianCalendar) Calendar.getInstance();
gc.setTime(date);
return gc.get(2) + 1;
}
/**
* 将字符串的月份开始天数和结束天数解析成日期格式
* @param format
* @return
*/
public static List<Date> parseGetMonth(String format) {
List<Date> dateList = new ArrayList<>();
String[] split = format.split("-");
SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd");
try {
Date startDate = sdf.parse(split[0]);
Date endDate = sdf.parse(split[1]);
dateList.add(startDate);
dateList.add(endDate);
} catch (ParseException e) {
e.printStackTrace();
}
return dateList;
}
/**
* 获取任意天数的月份开始天数和结束天数
*/
public static String getMonth(Date date) {
StringBuffer sb = new StringBuffer();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:SS");
String format = sdf.format(date);
String[] split = format.split("-");
int month = Integer.parseInt(split[1]);
int year = Integer.parseInt(split[0]);
for (int i = 1; i <= 12; i++) {
if (month == 4 || month == 6 || month == 9 || month == 11) {
sb.append(JSON.toJSONString(year));
sb.append(".");
sb.append(JSON.toJSONString(month));
sb.append(".");
sb.append("01-");
sb.append(JSON.toJSONString(year));
sb.append(".");
sb.append(JSON.toJSONString(month));
sb.append(".");
sb.append("30");
break;
} else if (month == 2) {
sb.append(JSON.toJSONString(year));
sb.append(".");
sb.append(JSON.toJSONString(month));
sb.append(".");
sb.append("01-");
sb.append(JSON.toJSONString(year));
sb.append(".");
sb.append(JSON.toJSONString(month));
sb.append(".");
sb.append("28");
break;
} else {
sb.append(JSON.toJSONString(year));
sb.append(".");
sb.append(JSON.toJSONString(month));
sb.append(".");
sb.append("01-");
sb.append(JSON.toJSONString(year));
sb.append(".");
sb.append(JSON.toJSONString(month));
sb.append(".");
sb.append("31");
break;
}
}
return sb.toString();
}
//两个日期相减得到的天数
public static int getDiffDays(Date beginDate, Date endDate) {
if (beginDate == null || endDate == null) {
throw new IllegalArgumentException("getDiffDays param is null!");
}
long diff = (endDate.getTime() - beginDate.getTime())
/ (1000 * 60 * 60 * 24);
int days = new Long(diff).intValue();
return days;
}
//两个日期相减得到的毫秒数
public static long dateDiff(Date beginDate, Date endDate) {
long date1ms = beginDate.getTime();
long date2ms = endDate.getTime();
return date2ms - date1ms;
}
//获取两个日期中的最大日期
public static Date max(Date beginDate, Date endDate) {
if (beginDate == null) {
return endDate;
}
if (endDate == null) {
return beginDate;
}
if (beginDate.after(endDate)) {
return beginDate;
}
return endDate;
}
//获取两个日期中的最小日期
public static Date min(Date beginDate, Date endDate) {
if (beginDate == null) {
return endDate;
}
if (endDate == null) {
return beginDate;
}
if (beginDate.after(endDate)) {
return endDate;
}
return beginDate;
}
//返回某月该季度的第一个月
public static Date getFirstSeasonDate(Date date) {
final int[] SEASON = {1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4};
Calendar cal = Calendar.getInstance();
cal.setTime(date);
int sean = SEASON[cal.get(Calendar.MONTH)];
cal.set(Calendar.MONTH, sean * 3 - 3);
return cal.getTime();
}
//返回某个日期下几天的日期
public static Date getNextDay(Date date, int i) {
Calendar cal = new GregorianCalendar();
cal.setTime(date);
cal.set(Calendar.DATE, cal.get(Calendar.DATE) + i);
return cal.getTime();
}
//返回某个日期前几天的日期
public static Date getFrontDay(Date date, int i) {
Calendar cal = new GregorianCalendar();
cal.setTime(date);
cal.set(Calendar.DATE, cal.get(Calendar.DATE) - i);
return cal.getTime();
}
//获取某年某月到某年某月按天的切片日期集合(间隔天数的集合)
@SuppressWarnings({"rawtypes", "unchecked"})
public static List getTimeList(int beginYear, int beginMonth, int endYear,
int endMonth, int k) {
List list = new ArrayList();
if (beginYear == endYear) {
for (int j = beginMonth; j <= endMonth; j++) {
list.add(getTimeList(beginYear, j, k));
}
} else {
{
for (int j = beginMonth; j < 12; j++) {
list.add(getTimeList(beginYear, j, k));
}
for (int i = beginYear + 1; i < endYear; i++) {
for (int j = 0; j < 12; j++) {
list.add(getTimeList(i, j, k));
}
}
for (int j = 0; j <= endMonth; j++) {
list.add(getTimeList(endYear, j, k));
}
}
}
return list;
}
//获取某年某月按天切片日期集合(某个月间隔多少天的日期集合)
@SuppressWarnings({"unchecked", "rawtypes"})
public static List<Date> getTimeList(int beginYear, int beginMonth, int k) {
List list = new ArrayList();
Calendar begincal = new GregorianCalendar(beginYear, beginMonth, 1);
int max = begincal.getActualMaximum(Calendar.DATE);
for (int i = 1; i < max; i = i + k) {
list.add(begincal.getTime());
begincal.add(Calendar.DATE, k);
}
begincal = new GregorianCalendar(beginYear, beginMonth, max);
list.add(begincal.getTime());
return list;
}
//获取某年某月按天切片日期集合(某个月间隔多少天的日期集合)
@SuppressWarnings({"unchecked", "rawtypes"})
public static List<String> getTimeList2(int beginYear, int beginMonth, int k) {
List<String> list = new ArrayList();
Calendar begincal = new GregorianCalendar(beginYear, beginMonth, 1);
int max = begincal.getActualMaximum(Calendar.DATE);
for (int i = 1; i < max; i = i + k) {
Date time = begincal.getTime();
SimpleDateFormat sdf=new SimpleDateFormat("MM/dd");
String format = sdf.format(time);
list.add(format);
begincal.add(Calendar.DATE, k);
}
begincal = new GregorianCalendar(beginYear, beginMonth, max);
Date time = begincal.getTime();
SimpleDateFormat sdf=new SimpleDateFormat("MM/dd");
String format = sdf.format(time);
list.add(format);
return list;
}
/**
* 获取6个月前的开始时间
* @return
*/
public static long getHalfYearOfStartTime(){
GregorianCalendar gr = new GregorianCalendar();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar calendar = Calendar.getInstance();
int i = calendar.get(Calendar.YEAR);
System.out.println("当前年"+i);
gr.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH) - 7, calendar.get(Calendar.DATE));
//半年前的时间
String di = null;
di = sdf.format(gr.getTime());
System.out.println("半年前的时间"+di);
Date time = gr.getTime();
return getDayStartTime(time).getTime();
//一个星期前的时间
// gr.set(GregorianCalendar.YEAR, GregorianCalendar.MONDAY, GregorianCalendar.DATE - 7);
//一年前的时间
// gr.set(GregorianCalendar.YEAR - 1, GregorianCalendar.MONDAY, GregorianCalendar.DATE);
}
/* public static void main(String[] args) {
long halfYearOfStartTime = NewDateUtil.getHalfYearOfEndTime();
System.out.println(halfYearOfStartTime);
}*/
/**
* 获取6个月前的结束时间
* @return
*/
public static long getHalfYearOfEndTime(){
GregorianCalendar gr = new GregorianCalendar();
Calendar calendar = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
gr.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH) - 7, calendar.get(Calendar.DATE));
//半年前的时间
String di = null;
di = sdf.format(gr.getTime());
System.out.println("半年前的时间");
Date time = gr.getTime();
return getDayEndTime(time).getTime();
//一个星期前的时间
// gr.set(GregorianCalendar.YEAR, GregorianCalendar.MONDAY, GregorianCalendar.DATE - 7);
//一年前的时间
// gr.set(GregorianCalendar.YEAR - 1, GregorianCalendar.MONDAY, GregorianCalendar.DATE);
}
//JAVA获取某段时间内的所有日期
public static List<Date> findDates(Date dStart, Date dEnd) {
Calendar cStart = Calendar.getInstance();
cStart.setTime(dStart);
List<Date> dateList = new ArrayList<>();
//别忘了,把起始日期加上
dateList.add(dStart);
// 此日期是否在指定日期之后
while (dEnd.after(cStart.getTime())) {
// 根据日历的规则,为给定的日历字段添加或减去指定的时间量
cStart.add(Calendar.DAY_OF_MONTH, 1);
dateList.add(cStart.getTime());
}
return dateList;
}
//获取下一年的当前日期
public static long getNextYear() {
Calendar instance = Calendar.getInstance();
instance.set(Calendar.YEAR, instance.get(Calendar.YEAR) + 1);
return instance.getTimeInMillis();
}
//获取下一年的当前日期
public static long getNextYear(long time) {
Calendar instance = DateUtils.toCalendar(new Date(time));
instance.set(Calendar.YEAR, instance.get(Calendar.YEAR) + 1);
// instance.set(Calendar.MONTH,instance.get(Calendar.MONTH));
// instance.set(Calendar.DAY_OF_MONTH,instance.get(Calendar.DAY_OF_MONTH));
// instance.set(Calendar.HOUR,instance.get(Calendar.HOUR));
// instance.set(Calendar.MINUTE,instance.get(Calendar.MINUTE));
// instance.set(Calendar.SECOND,instance.get(Calendar.SECOND));
return instance.getTimeInMillis();
}
//获取下一个月的当前日期
public static long getNextMonth() {
Calendar instance = Calendar.getInstance();
instance.set(Calendar.MONTH, instance.get(Calendar.MONTH) + 1);
return instance.getTimeInMillis();
}
//获取下一个星期的当前日期
public static long getNextWeek() {
Calendar instance = Calendar.getInstance();
instance.set(Calendar.DAY_OF_MONTH, instance.get(Calendar.DAY_OF_MONTH) + 7);
return instance.getTimeInMillis();
}
/*public static void main(String[] args) {
//获取当前日期
Date frontDay = getFrontDay(new Date(), 30);
SimpleDateFormat sdf = new SimpleDateFormat("MM/dd");
String format1 = sdf.format(frontDay);
String format2 = sdf.format(new Date());
System.out.println("当前日期"+format1);
System.out.println("30天前的日期"+format2);
List<Date> dates = findDates(frontDay, new Date());
for (Date date : dates) {
String format3 = sdf.format(date);
System.out.println(format3);
}
}
*/
}
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交