一、 Calendar类的使用:封装如下工具方法
- 获取指定日期的昨天日期
假设当前日期是2013年04月12日,则昨天是2013年04月11日)
public static Calendar yesterday(Calendar cal){
}- 获取指定日期的本周的第一天(周日) (2013年04月07日)
- 获取指定日期的本周的最后一天(周六) (2013年04月13日)
- 获取指定日期的上周的第一天 (2013年03月31日)
- 获取指定日期的本月的第一天 (2013年04月01日)
- 获取指定日期的本月的最后一天 (2013年04月30日)
- 获取指定日期的上月的第一天 (2013年03月01日)
主类:
package Test;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Calendar;
import java.util.Scanner;
public class Test {
public static void main(String[] args) throws ParseException {
Scanner sc=new Scanner(System.in);
System.out.println("请输入要查询的日期: ");
String s=sc.nextLine();
DateFormat df= new SimpleDateFormat("yyyy年MM月dd日");//设置格式
Date d=new Date();//创建日期对象用来存放日历的属性
try{
d=df.parse(s);//将字符串通过格式为日期
}catch (ParseException e){
System.out.println("日期格式不对!");
}
Calendar c=Calendar.getInstance();
c.setTime(d);
ca cd=new ca();
Calendar cd1=cd.getYesterday(c);
System.out.println("该日期的前一天的日期为:");
System.out.println(cd1.get(Calendar.YEAR)+"年"+(cd1.get(Calendar.MONTH)+1)+"月"+cd1.get(Calendar.DATE)+"日");
Calendar cd2=cd.getFirstdayOfWeek(c);
System.out.println("该日期的本周的第一天的日期为:");
System.out.println(cd2.get(Calendar.YEAR)+"年"+(cd2.get(Calendar.MONTH)+1)+"月"+cd2.get(Calendar.DATE)+"日");
Calendar cd3=cd.getEnddayOfWeek(c);
System.out.println("该日期的本周的最后一天的日期为:");
System.out.println(cd3.get(Calendar.YEAR)+"年"+(cd3.get(Calendar.MONTH)+1)+"月"+cd3.get(Calendar.DATE)+"日");
Calendar cd4=cd.getLastOfWeek(c);
System.out.println("该日期的上周的第一天的日期为:");
System.out.println(cd4.get(Calendar.YEAR)+"年"+(cd4.get(Calendar.MONTH)+1)+"月"+cd4.get(Calendar.DATE)+"日");
Calendar cd5=cd.getMonthFirstDay(c);
System.out.println("该日期的本月的第一天的日期为:");
System.out.println(cd5.get(Calendar.YEAR)+"年"+(cd5.get(Calendar.MONTH)+1)+"月"+cd5.get(Calendar.DATE)+"日");
Calendar cd6=cd.getNextMonthFirstDay(c);
System.out.println("该日期的本月的最后一天的日期为:");
System.out.println(cd6.get(Calendar.YEAR)+"年"+(cd6.get(Calendar.MONTH)+1)+"月"+cd6.get(Calendar.DATE)+"日");
Calendar cd7=cd.getLastMonthFirstDay(c);
System.out.println("该日期的上个月的第一天的日期为:");
System.out.println(cd7.get(Calendar.YEAR)+"年"+(cd7.get(Calendar.MONTH)+1)+"月"+cd7.get(Calendar.DATE)+"日");
}
}
方法类
package Test;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Calendar;
public class ca {
public Calendar getYesterday(Calendar c){
c.add(Calendar.DATE,-1);
return c;
}
public Calendar getFirstdayOfWeek(Calendar c){
int c1=c.get(Calendar.DAY_OF_WEEK);
c.add(Calendar.DATE,-c1+1);
return c;
}
public Calendar getEnddayOfWeek(Calendar c){
int c1=c.get(Calendar.DAY_OF_WEEK);
c.add(Calendar.DATE,7-c1);
return c;
}
public Calendar getLastOfWeek(Calendar c){
int c1=c.get(Calendar.DAY_OF_WEEK);
c.add(Calendar.DATE,-c1-6);
return c;
}
public Calendar getMonthFirstDay(Calendar c){
c.set(Calendar.DATE,1);
return c;
}
public Calendar getNextMonthFirstDay(Calendar c){
c.set(Calendar.DATE,1);
c.add(Calendar.MONTH,+1);
c.add(Calendar.DATE,-1);
return c;
}
public Calendar getLastMonthFirstDay(Calendar c){
c.set(Calendar.DATE,1);
c.add(Calendar.MONTH,-1);
return c;
}
}
二、编写一个Java方法,返回两个给定日期相差的天数。(大致)
package Test;
import static java.lang.Math.abs;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;
public class Tets {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("请输入第一个日期: ");
String s=sc.nextLine();
System.out.println("请输入第二个日期: ");
String s1=sc.nextLine();
long a=trans(s).getTimeInMillis();
long b=trans(s1).getTimeInMillis();
System.out.println("俩个日期相差的天数:");
System.out.println((abs(a-b)/(24*3600*1000)));
}
public static Calendar trans(String s){
DateFormat df=new SimpleDateFormat("yyyyMMdd");
Date d=new Date();
try{
d=df.parse(s);
} catch (ParseException e) {
e.printStackTrace();
}
Calendar c=Calendar.getInstance();
c.setTime(d);
return c;
}
}