Date属于java.util.Date包下,表示时间对象
新建Date对象:Date date = new Date();
常用方法:
- 获得年份:date.getYear() 注意年份要加上1900,这样才是日期对象所代表的年份
- 获取月份:date.getMonth() 注意月份要加1,这样才是日期对象所代表的月份
- 获取日期:date.getDate()
- 获取小时:date..getHours() 不设置默认为0
- 获取分钟:date.getMinutes()
- 获取秒:date.getSeconds()
- 获取毫秒:date.getTime()
- 获取星期:date.getDay() 注意:0代表星期日、1代表星期1、2代表星期2,其他的一次类推了
工具类常用方法:
public static final String FULL_DATE_FORMAT = "yyyy-MM-dd HH:mm:ss";
public static final String MON_DATE_FORMAT = "yyyy-MM";
public static final String FULL_DATE_FORMAT_CN = "yyyy年MM月dd日 HH时mm分ss秒";
public static final String PART_DATE_FORMAT = "yyyy-MM-dd";
public static final String PART_DATE_FORMAT_CN = "yyyy年MM月dd日";
public static final String YEAR_DATE_FORMAT = "yyyy";
public static final String MONTH_DATE_FORMAT = "MM";
public static final String DAY_DATE_FORMAT = "dd";
public static final String WEEK_DATE_FORMAT = "week";
public static final String FULL_DATE_FORMAT_JC = "yyyyMMddHHmmss";
1、将日期类型转换为字符串
public static String getFormatDate(Date date,String xFormat){
date = date == null ? new Date() : date;
xFormat = StringUtils.isNotEmpty(xFormat) == true ? xFormat : FULL_DATE_FORMAT;
SimpleDateFormat sdf = new SimpleDateFormat(xFormat);
return sdf.format(date);
}
2、将日期字符串转换为日期格式类型
public static Date parseString2Date(String xDate, String xFormat) {
while(!isNotDate(xDate)){
xFormat = StringUtils.isNotEmpty(xFormat) == true ? xFormat : PART_DATE_FORMAT;
SimpleDateFormat sdf = new SimpleDateFormat(xFormat);
Date date = null ;
try {
date = sdf.parse(xDate);
} catch (ParseException e) {
e.printStackTrace();
return null;
}
return date;
}
return null;
}
3、比较日期大小:x < y return [-1]; x = y return [0] ; x > y return [1] ;
public static int compareDate(Date dateX,Date dateY){
return dateX.compareTo(dateY);
}
4、判断需要转换类型的日期字符串是否符合格式要求
public static boolean isNotDate(String xDate){
SimpleDateFormat sdf = new SimpleDateFormat(PART_DATE_FORMAT);
try {
if(StringUtils.isEmpty(xDate)){
return true;
}
sdf.parse(xDate);
return false;
} catch (ParseException e) {
e.printStackTrace();
return true;
}
}
5、获取俩个日期之间相差天数
public static int getDiffDays(Date dateX,Date dateY){
if ((dateX == null) || (dateY == null)){
return 0;
}
int dayX = (int)(dateX.getTime() / (60 * 60 * 1000 * 24));
int dayY = (int)(dateY.getTime() / (60 * 60 * 1000 * 24));
return dayX > dayY ? dayX - dayY : dayY - dayX;
}
6、获取俩个日期之间相差
public static String getDiffNoABS(Date dateX,Date dateY){
if ((dateX == null) || (dateY == null)){
return "";
}
long nd = 1000 * 24 * 60 * 60;
long nh = 1000 * 60 * 60;
long nm = 1000 * 60;
long c = dateX.getTime() - dateY.getTime();
// 计算差多少天
long day = c / nd;
// 计算差多少小时
long hour = c % nd / nh;
// 计算差多少分钟
long min = c % nd % nh / nm;
String date = "";
if(day != 0) {
date += day + "天";
}
if(hour != 0) {
date += hour + "小时";
}
if(min != 0) {
date += min + "分钟";
}
return date;
}
7、获取星期字符串
public static String getWeekString(Object xDate){
int week = getDateTimeParam(xDate,WEEK_DATE_FORMAT);
switch (week) {
case 1:
return "星期一";
case 2:
return "星期二";
case 3:
return "星期三";
case 4:
return "星期四";
case 5:
return "星期五";
case 6:
return "星期六";
case 7:
return "星期日";
default :
return "";
}
}
8、获取某天开始时间
public static Date getStartTime(Date date){
Calendar calendar = Calendar.getInstance();
date=date==null ? new Date() : date;
calendar.setTime(date);
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
return calendar.getTime();
}
9、获取某天结束时间
public static Date getEndTime(Date date){
Calendar calendar = Calendar.getInstance();
date=date==null ? new Date() : date;
calendar.setTime(date);
calendar.set(Calendar.HOUR_OF_DAY, 23);
calendar.set(Calendar.MINUTE, 59);
calendar.set(Calendar.SECOND, 59);
calendar.set(Calendar.MILLISECOND, 999);
return calendar.getTime();
}
10、获取本月第一天
public static String getMonthFrist(Date time,String xFormat) {
SimpleDateFormat format = new SimpleDateFormat(xFormat);
Calendar ca = Calendar.getInstance();
ca.setTime(time);
ca.set(Calendar.DAY_OF_MONTH, 1);
ca.set(Calendar.HOUR_OF_DAY, 0);
ca.set(Calendar.MINUTE, 0);
ca.set(Calendar.SECOND, 0);
return format.format(ca.getTime());
}
11、获取本月最后一天
public static String getFormatDate(Date date,String xFormat){
date = date == null ? new Date() : date;
xFormat = StringUtils.isNotEmpty(xFormat) == true ? xFormat : FULL_DATE_FORMAT;
SimpleDateFormat sdf = new SimpleDateFormat(xFormat);
return sdf.format(date);
}
12、把2019-4转换成2019-04
public static Date parseString2Date(String xDate, String xFormat) {
while(!isNotDate(xDate)){
xFormat = StringUtils.isNotEmpty(xFormat) == true ? xFormat : PART_DATE_FORMAT;
SimpleDateFormat sdf = new SimpleDateFormat(xFormat);
Date date = null ;
try {
date = sdf.parse(xDate);
} catch (ParseException e) {
e.printStackTrace();
return null;
}
return date;
}
return null;
}
13、获取本月有多少天
public static int compareDate(Date dateX,Date dateY){
return dateX.compareTo(dateY);
}
14、获取当前时间是一年当中的第几周(年的第一个周一为第一周)
public static int getDayIsWeek (Date date) {
int isWeek = 0;
Calendar calendar = Calendar.getInstance();
calendar.setFirstDayOfWeek(Calendar.MONDAY);
calendar.setTime(date);
isWeek = calendar.get(Calendar.WEEK_OF_YEAR);
int mouth = calendar.get(Calendar.MONTH);
//如果月份是12月,且求出来的周数是第一周,说明该日期实质上是这一年的第53周,也是下一年的第一周
if (mouth >= 11 && isWeek <= 1) {
isWeek += 52;
}
//判断年的第一天是周几
calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.set(Calendar.MONTH, 0);
calendar.set(Calendar.DAY_OF_MONTH, 1);
int week = getDateTimeParam(calendar.getTime(), "week");//1号是星期几
if(week != 1) {
isWeek = isWeek - 1;
}
return isWeek;
}
好好学习,天天搬砖,请点击关注学习更多java小知识