时间处理相关类
Date时间类(java.util.Date)
/**
* 测试Date类常用方法
* @author TheMutents
*/
import java.util.Date;
public class DataClass {
public static void main(String[] args) {
//long类型可以表示的最大年数
long a=Long.MAX_VALUE/(1000l*3600*24*365);//大约292471208个年数,足够工作中使用
System.out.println(a);
long nowNum=System.currentTimeMillis();//代表系统(根据操作系统时间计算)当前时刻的毫秒数(从计算机零时刻开始)
System.out.println(nowNum);
Date d1=new Date();//无参代表当前时刻
Date d2=new Date(1000l*3600*24*365*10);
System.out.println(d1.getTime());//getTime()返回d1时间的毫秒数(自1970-1-1-00:00:00后)
System.out.println(d2.getTime());
System.out.println(d1.toString());//toString返回格式Thu Apr 08 21:27:11 CST 2021
System.out.println(d2.toString());
System.out.println(d1.after(d2));//表示d1时刻在d2时刻后面
System.out.println(d2.before(d1));//表示d2时刻在d1时刻前面
System.out.println(d2.equals(d1));//比较两个日期是否相等
}
}
代码结果:
DateFormat类和SimpleDateFormat类(时间格式化类)
格式化字符的含义
测试代码
/**
* 测试时间格式化类
*/
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class DataFormat_Test {
public static void main(String[] args) throws ParseException {
SimpleDateFormat df1=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");//时间格式
SimpleDateFormat df2=new SimpleDateFormat("今年第M月的第d天,今年第w周");
Date d1=new Date();
String str1=df1.format(d1);//将Date类型时间转为df1格式的字符串类型
String str2=df2.format(d1);
System.out.println(str1);
System.out.println(str2);
String str3="2020-12-12 12:00:00";//将字符串类型时间转化为Date类型时间
Date d2=df1.parse(str3);
System.out.println(d2.getTime());
}
}
代码结果:
calendar日历类(抽象类)和子类GregorianCalendar
月份:从0-11,依次表示一月、二月、三月、…、十月、十一月、十二月
星期:从1-7,依次表示星期天、星期一、…、星期五、星期六
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
/**
* 测试日历类Calendar的子类GregorianCalendar
* @author TheMutents
*
*/
public class Calendar_Test {
public static void main(String[] args) {
GregorianCalendar calendar=new GregorianCalendar();//创建当前时间的日历对象(无参)
System.out.println(calendar.get(Calendar.YEAR));//打印日历年份2021
System.out.println(calendar.get(Calendar.MONTH));//打印日历对象的月份,0代表1月,以此类推
System.out.println(calendar.get(Calendar.DATE));//返回天数(几号)
System.out.println(calendar.get(Calendar.DAY_OF_WEEK));//打印星期几,1代表星期天,2-星期一,以此类推
System.out.println(calendar.get(Calendar.HOUR_OF_DAY)+":"+calendar.get(Calendar.MINUTE)+":"+calendar.get(Calendar.SECOND));
dp(calendar);
GregorianCalendar c1=new GregorianCalendar(2021,3,9,12,12,12);
System.out.println(c1.get(Calendar.YEAR));//打印日历年份2021(有参)
System.out.println(c1.get(Calendar.MONTH));//此处打印日历对象的月份(对象中月份参数的值,3-四月)
System.out.println(c1.get(Calendar.DATE));//返回天数(几号)
System.out.println(c1.get(Calendar.DAY_OF_WEEK));//此处打印6,表示星期5
//打印时分秒
System.out.println(c1.get(Calendar.HOUR_OF_DAY)+":"+c1.get(Calendar.MINUTE)+":"+c1.get(Calendar.SECOND));
dp(c1);
//更改c1
c1.set(Calendar.DATE, 20);//日期改为20号
c1.add(Calendar.HOUR, 4);//时间增加4小时
dp(c1);
Date d=c1.getTime();//日历对象转成时间对象(毫秒单位)
SimpleDateFormat f=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");//创建一个时间格式对象
String c1Time=f.format(d);
System.out.println("更改后的c1为:"+c1Time);
Calendar c=Calendar.getInstance();//使用Calendar类的静态方法创建日历对象
c.setTime(d);//时间对象转成日历对象d转化为日历对象c
System.out.println(c.get(Calendar.DAY_OF_WEEK));//打印3,3—星期二,2021-4-20(星期二)
dp(c);
}
public static void dp(Calendar c){
String []mon = {"一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"};
String []week = {"","星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
int year=c.get(Calendar.YEAR);
String month=mon[c.get(Calendar.MONTH)];
String weekday=week[c.get(Calendar.DAY_OF_WEEK)];
System.out.println(year+"年"+month+c.get(Calendar.DAY_OF_MONTH)+"日"+weekday);
System.out.print("时间:");
System.out.println(c.get(Calendar.HOUR_OF_DAY)+":"+c.get(Calendar.MINUTE)+":"+c.get(Calendar.SECOND));
System.out.println("---------------------------------");
}
}