java日期常用方法
效果图,相关的方法
直接上代码了,能想到的都写下来了,如果缺什么评论区留言,接着补充
import org.apache.commons.lang3.StringUtils;
import java.text.ParseException;
import java.text.ParsePosition;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Locale;
/***
* @ClassName: DateDemo
* @Description:
* @Auther: 施某人
*/
public class DateDemo {
private static final String YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss";
public static final String YYYY_MM_DD = "yyyy-MM-dd";
public static void main(String[] args) throws ParseException {
//获取当前时间
SimpleDateFormat sdfYYYY_MM_DD = new SimpleDateFormat(YYYY_MM_DD);
SimpleDateFormat sdfYYYY_MM_DD_HH_MM_SS = new SimpleDateFormat(YYYY_MM_DD_HH_MM_SS);
System.out.println("获取当前时间年月日:"+sdfYYYY_MM_DD.format(new Date()));
System.out.println("获取当前时间年月日时分秒:"+sdfYYYY_MM_DD_HH_MM_SS.format(new Date()));
//给当前时间增加多少天
Date str = sdfYYYY_MM_DD.parse(sdfYYYY_MM_DD.format(new Date()));
Calendar cal = Calendar.getInstance();
cal.setTime(str);
int index = 7;
//增加index天
cal.add(Calendar.DAY_OF_MONTH, index);
Date lastTime = cal.getTime();
System.out.println("增加了"+index+"天后的时间:"+sdfYYYY_MM_DD.format(lastTime));
String hour = sdfYYYY_MM_DD_HH_MM_SS.format(new Date()).substring(11, 13);
System.out.println("获取当前时间的小时:"+hour);
String min = sdfYYYY_MM_DD_HH_MM_SS.format(new Date()).substring(14, 16);
System.out.println("获取当前时间的分钟:"+min);
Date date = new Date();
// lastTime.getTime() 当前时间7天后的时间
long day = (lastTime.getTime() - date.getTime()) / (24 * 60 * 60 * 1000);
System.out.println("两个时间间隔的天数:"+day);
//当前时间 前移 或 延后 delay分钟
int delay = 20;
cal.setTime(date);
cal.add(Calendar.MINUTE, delay);//延后20分钟
Date delayTime = cal.getTime();
System.out.println("当前时间延后了"+index+"分钟:"+sdfYYYY_MM_DD_HH_MM_SS.format(delayTime));
// 当前时间延后或前移几天的时间,date为当前时间,delayDay为前移或后延的天数
int delayDay = -7;
Date d = strToDate(sdfYYYY_MM_DD.format(date), YYYY_MM_DD);
long myTime = (d.getTime() / 1000) + delayDay * 24 * 60 * 60;
d.setTime(myTime * 1000);
String mdate = sdfYYYY_MM_DD.format(d);
System.out.println("当前时间延后"+delayDay+"天:"+mdate);
//获取本月第一天
cal.set(Calendar.DAY_OF_MONTH,1);//设置为1号,当前日期既为本月第一天
Date firstTime = cal.getTime();
System.out.println("获取本月第一天时间:"+sdfYYYY_MM_DD.format(firstTime));
//获取本月最后一天
String str1 = sdfYYYY_MM_DD.format(new Date()).substring(0, 8);
String month = sdfYYYY_MM_DD.format(new Date()).substring(5, 7);
int mon = Integer.parseInt(month);
if (mon == 1 || mon == 3 || mon == 5 || mon == 7 || mon == 8 || mon == 10 || mon == 12) {
str1 += "31";
} else if (mon == 4 || mon == 6 || mon == 9 || mon == 11) {
str1 += "30";
} else {
if (isLeapYear(sdfYYYY_MM_DD.format(new Date()))) {
str1 += "29";
} else {
str1 += "28";
}
}
System.out.println("本月最后一天是:"+str1);
Calendar c = Calendar.getInstance(Locale.CHINA);
String week = Integer.toString(c.get(Calendar.WEEK_OF_YEAR));
if (week.length() == 1)
week = "0" + week;
String year = Integer.toString(c.get(Calendar.YEAR));
System.out.println("当前时间是"+year+"年第" + week+"周");
//根据一个日期判断是星期几
String sdate = "2020-02-02";
Date weekDay = DateUtil.strToDate(sdate, YYYY_MM_DD);
c.setTime(weekDay);
// int hour=c.get(Calendar.DAY_OF_WEEK);
// hour中存的就是星期几了,其范围 1~7
// 1=星期日 7=星期六,其他类推
System.out.println(sdate+"那天是:"+new SimpleDateFormat("EEEE").format(c.getTime()));
//两个时间相差多少天
c.set(Calendar.DATE,31);
c.set(Calendar.MONTH,11);
c.set(Calendar.YEAR,2021);
long daySize = (date.getTime() - c.getTime().getTime()) / (24 * 60 * 60 * 1000);
System.out.println("当前时间与"+sdfYYYY_MM_DD.format(c.getTime())+"相差:"+daySize+"天");
}
//判断是否为闰年
public static boolean isLeapYear(String ddate) {
/**
* 详细设计: 1.被400整除是闰年,否则: 2.不能被4整除则不是闰年 3.能被4整除同时不能被100整除则是闰年
* 3.能被4整除同时能被100整除则不是闰年
*/
Date d = strToDate(ddate, YYYY_MM_DD);
GregorianCalendar gc = (GregorianCalendar) Calendar.getInstance();
gc.setTime(d);
int year = gc.get(Calendar.YEAR);
if ((year % 400) == 0)
return true;
else if ((year % 4) == 0) {
if ((year % 100) == 0)
return false;
else
return true;
} else
return false;
}
/**
* 判断两个时间是否是同一周
* @param date1
* @param date2
* @return
*/
public static boolean isSameWeekDates(Date date1, Date date2) {
Calendar cal1 = Calendar.getInstance();
Calendar cal2 = Calendar.getInstance();
cal1.setTime(date1);
cal2.setTime(date2);
int subYear = cal1.get(Calendar.YEAR) - cal2.get(Calendar.YEAR);
if (0 == subYear) {
if (cal1.get(Calendar.WEEK_OF_YEAR) == cal2.get(Calendar.WEEK_OF_YEAR))
return true;
} else if (1 == subYear && 11 == cal2.get(Calendar.MONTH)) {
// 如果12月的最后一周横跨来年第一周的话则最后一周即算做来年的第一周
if (cal1.get(Calendar.WEEK_OF_YEAR) == cal2.get(Calendar.WEEK_OF_YEAR))
return true;
} else if (-1 == subYear && 11 == cal1.get(Calendar.MONTH)) {
if (cal1.get(Calendar.WEEK_OF_YEAR) == cal2.get(Calendar.WEEK_OF_YEAR))
return true;
}
return false;
}
public static Date strToDate(String strDate, String format) {
if (StringUtils.isEmpty(strDate)) {
return null;
}
SimpleDateFormat formatter = new SimpleDateFormat(format);
ParsePosition pos = new ParsePosition(0);
return formatter.parse(strDate, pos);
}
}