package com.base.test;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
public class Test0 {
public static void main(String[] args) {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(format.format(new Date((long) 1517291199 * 1000)));
System.out.println("获取下个月的这个日期,如果不存在获取下个月最后一天:");
System.out.println(format.format(new Date((long) getDayOfSpecialTime(1517291199, 1, 0, 2) * 1000)));
System.out.println("获取第二日日期:");
System.out.println(format.format(new Date((long) getDayOfSpecialTime(1517291199, 0, 1, 2) * 1000)));
}
/**
* 获取制定间隔月份,间隔天数的时间INT数值;如果下个月没有这个日期则取最后一个日期
*
* @param dateInseconds
* 日期
* @param intervalMonth
* 间隔的月份,如果为0则表示当月
* @param intervalDay
* 间隔的天数,如果为0表示当天,1表示第二天
* @type 类型,如果为1,则是23:59:59 为2则是00:00:00
* @return
*/
private static Integer getDayOfSpecialTime(int dateInSeconds, int intervalMonth, int intervalDay, int type) {
long millSeconds = (long) dateInSeconds * 1000;
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(millSeconds);
// 获取日所在月
int month = calendar.get(Calendar.MONTH);
calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH) + intervalMonth,
calendar.get(Calendar.DAY_OF_MONTH),
0, 0, 0);
if (month + intervalMonth < calendar.get(Calendar.MONTH)) {
calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), 1, 0, 0, 0);
calendar.add(Calendar.DAY_OF_MONTH, -1);
}
if (intervalDay != 0) {
calendar.add(Calendar.DAY_OF_MONTH, intervalDay);
}
if (type == 1) {
calendar.set(Calendar.HOUR_OF_DAY, 23);
calendar.set(Calendar.MINUTE, 59);
calendar.set(Calendar.SECOND, 59);
}
return (int) (calendar.getTimeInMillis() / 1000);
}
public static Date getFirstDateOfMonth(Date theDate) {
Calendar c = new GregorianCalendar();
c.setTime(theDate);
c.set(Calendar.DAY_OF_MONTH, 1);
c.set(Calendar.HOUR_OF_DAY, 0);
c.set(Calendar.MINUTE, 0);
c.set(Calendar.SECOND, 0);
c.set(Calendar.MILLISECOND, 0);
return c.getTime();
}
}
测试结果:
2018-01-30 13:46:39
获取下个月的这个日期,如果不存在获取下个月最后一天:
2018-02-28 00:00:00
获取第二日日期:
2018-01-31 00:00:00