关于日期 Date 类与 Calendar类
-__ 均属于java.util类__
- Date类:创造Date类并输出当前时间
Date nowTime = new Date(); System.out.print(nowTime);
或者 - Calendar类 通过特定方法初始化对象
Calendar calendar = Calendar.getInstance();
- 调用方法设置时间
- 通过get获取年份,月份等(0代表1月),而年日不是0代1,DAY_OF_WEEK相反7代表星期6,2代表星期1。
- 计算相隔天数
以上多个应用方法例子:
package text83_DateInterval;
import java.util.*;
//注意 通过args传参只能在DOS中 很蠢
public class DateInterval {
public static void main(String[] args) {
// TODO Auto-generated method stub
int year1,year2,month1,month2,day1,day2;
int [] a = new int[3]; //注意初始化
int [] b = new int[3];
for(int i=0;i<args.length;i++) {//用main方法的参数读入数据
a[i] = Integer.parseInt(args[i]); //String转整数,注意类方法
}
for(int x=0;x<args.length;x++) {
b[x] = Integer.parseInt(args[x]);
}
year1 = a[0];
month1 = a[1];
day1 = a[2];
year2 = b[0];
month2 = b[1];
day2 = b[2];
Calendar date1 = Calendar.getInstance();//创建并初始化一个日历对象
date1.set(year1, month1-1,day1); //设置时间
Calendar date2 = Calendar.getInstance();
date2.set(year2, month2-1,day2);
long time1 = date1.getTimeInMillis();//表示从1790-1-1 00:00:00
long time2 = date2.getTimeInMillis();//到当前时间总共经过的时间的毫秒数
long dateInterval = (time2-time1)/(1000*60*60*24);//转换为天数
System.out.println(new Date(time1)+"与"+new Date(time1)+"相隔"+dateInterval+"天");
//应用java.util.Date类和匿名类结合表示时间
//其中new Date(time1)表示“公元后”毫秒数,故与getTimeInMills相对应
}
}
- 创造一个日历,2022年6月
- 主类
package calandar_rili;
public class Rili {
public static void main(String[] args) {
// TODO Auto-generated method stub
CalendarBean cb = new CalendarBean();
cb.setYear(2022);
cb.setMonth(6);
String []a = cb.getCalendar();//接收整理好的数组
char []str = "日一二三四五六".toCharArray();
for(char c:str) {
System.out.printf("%3c",c);
}
for(int i=0;i<a.length;i++) {//正常输出整理好的数组
if(i%7==0)
System.out.println("");
System.out.printf("%3s", a[i]);
}
}
}
- CalendarBean类
package calandar_rili;
import java.util.*;
public class CalendarBean {
int year = 0,month = 0;
public void setYear(int year) {
this.year = year;
}
public void setMonth(int month) {
this.month = month;
}
public String[] getCalendar() {
String[] a = new String[42]; // 7的倍数,且需要上下2行留出空白
Calendar rili = Calendar.getInstance();
rili.set(year,month-1, 1);//Calendar中0代表1月。
int weekDay = rili.get(Calendar.DAY_OF_WEEK)-1;//计算1号星期几,2代表星期1
int day = 0 ;//需要用到的日期
if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)
day = 31;
if(month==4||month==6||month==9||month==11)
day = 30;
if(month==2) {
if(((year%4==0)&&(year%100!=0))||year%400==0)
day = 29;
else
day = 28;
}
for(int i=0;i<weekDay;i++)
a[i]=" ";//用i作为标记,从0开始,没到1号的星期时输出空白
for(int i=weekDay,n=1;i<weekDay+day;i++) {
a[i] = String.valueOf(n);
n++;//i代表星期,n代表日期,1和前面算的星期对上,然后把日期放在数组内
}
for(int i=weekDay+day;i<a.length;i++)
a[i] = " ";//补完日历表日期走完后剩下的空白,另输出矩阵完整
return a;
}
}