java 日期方法_Java中常用日期操作及方法

前言

涉及到日期计算和字符串与日期转换,转来转去很是麻烦,于是归纳总结一下。以下都可以用。

一、Dateformat类的常用格式

y 年 Year 1996; 96

M 年中的月份 Month July; Jul; 07

w 年中的周数 Number 27

W 月份中的周数 Number 2

D 年中的天数 Number 189

d 月份中的天数 Number 10

F 月份中的星期 Number 2

E 星期中的天数 Text Tuesday; Tue

a Am/pm 标记 Text PM

H 一天中的小时数(0-23) Number 0

k 一天中的小时数(1-24) Number 24

K am/pm 中的小时数(0-11) Number 0

h am/pm 中的小时数(1-12) Number 12

m 小时中的分钟数 Number 30

s 分钟中的秒数 Number 55

S 毫秒数 Number 978

z 时区 General time zone Pacific Standard Time; PST; GMT-08:00

Z 时区 RFC 822 time zone -0800

二、日期转字符串,根据需要调整格式

public voidDateToString(){

Date currentTime= newDate();

SimpleDateFormat formatter= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

String dateString=formatter.format(currentTime);

System.out.println(dateString);

}

三、字符串转日期

public void StrToDate() throwsParseException {

String dateStr= "2019-01-19";

SimpleDateFormat format= new SimpleDateFormat("yyyy-MM-dd");

Date date= null;

date=format.parse(dateStr);

System.out.println(date);

}

四、获取本月第一天

public void getMonthFirstDay() throwsParseException {

SimpleDateFormat format= new SimpleDateFormat("yyyy-MM-dd");

Calendar cal=Calendar.getInstance();//获取当前日期

cal.set(Calendar.DAY_OF_MONTH,1);//设置为1号,当前日期既为本月第一天

String monthFirstDay =format.format(cal.getTime());

System.out.println(monthFirstDay);

}

五、获取本月最后一天

public void getMonthLastDay() throwsParseException {

SimpleDateFormat format= new SimpleDateFormat("yyyy-MM-dd");

Calendar cal=Calendar.getInstance();//获取当前日期

cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));

String monthLastDay=format.format(cal.getTime());

System.out.println(monthLastDay);

}

六、获取上个月第一天。最后一天同理

public void getLastMonthFirstDay() throwsParseException {

SimpleDateFormat format= new SimpleDateFormat("yyyy-MM-dd");

Calendar cal=Calendar.getInstance();//获取当前日期

cal.add(Calendar.MONTH, -1);

cal.set(Calendar.DAY_OF_MONTH,1);//设置为1号,当前日期既为本月第一天

String monthFirstDay =format.format(cal.getTime());

System.out.println(monthFirstDay);

}

七、通过Calendar获取年月日时分秒

public void testCalendar() throwsParseException {

Calendar cal=Calendar.getInstance();//赋值时年月日时分秒常用的6个值,注意月份下标从0开始,所以取月份要+1

System.out.println("年:" +cal.get(Calendar.YEAR));

System.out.println("月:" + (cal.get(Calendar.MONTH) + 1));

System.out.println("日:" +cal.get(Calendar.DAY_OF_MONTH));

System.out.println("时:" +cal.get(Calendar.HOUR_OF_DAY));

System.out.println("分:" +cal.get(Calendar.MINUTE));

System.out.println("秒:" +cal.get(Calendar.SECOND));

}

八、得到两个时间相隔的天数

public void getBetweenDay() throwsParseException{

String dateStr1= "2019-01-01";

String dateStr2= "2019-01-19";

SimpleDateFormat format= new SimpleDateFormat("yyyy-MM-dd");

Date date1=format.parse(dateStr1);

Date date2=format.parse(dateStr2);

Long inteverDay= (date2.getTime()-date1.getTime())/(1000*60*60*24);

System.out.println(inteverDay);

}

九、当前日期加一天

public void addCurrentDay() throwsParseException {

String datess= "2019-02-28";

SimpleDateFormat format= new SimpleDateFormat("yyyy-MM-dd");

Date parse=format.parse(datess);

Calendar cal=Calendar.getInstance();//获取当前日期

cal.setTime(parse);

cal.add(Calendar.DAY_OF_YEAR,+1);

String monthFirstDay=format.format(cal.getTime());

System.out.println(monthFirstDay);

}

十、Calendar转换成date

public void CalToDate() throwsParseException {

Calendar cal=Calendar.getInstance();

Date date=cal.getTime();

}

十一、date转换成Calendar

public void DateToCal() throwsParseException {

Calendar cal=Calendar.getInstance();

Date date= newDate();

cal.setTime(date);

}

十二、获得当前周周一的日期

public voidgetMonday(){

Date date= newDate();

Calendar c=Calendar.getInstance();

c.setTime(date);//monday可以替换成任意星期几

c.set(Calendar.DAY_OF_WEEK,Calendar.MONDAY);

String dateStr= new SimpleDateFormat("yyyy-MM-dd").format(c.getTime());

System.out.println(dateStr);

}

十三、判断两个时间是否在同一周

public booleanisSameWeekDates(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;

}

推荐阅读:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值