在计算机中,把1970年1月1日00:00:00定为基准时间,每个度量单位是毫秒。使用long类型的变量来表示时间,从基准时间往前几亿年,往后几亿年的时间都足够表示。
Java获得当前系统时刻方式为:
System.currentTimeMillis();
一、Date类
Date类中大部分方法都被遗弃,这里记录3个方法的使用。
1.1 getTime()方法
作用:获取系统当前的时刻。
说明:getTime()方法,其实就是调用的System.currentTimeMillis()
方法
Date date = new Date();
System.out.println(date.getTime());
1.2 after()方法和before()方法
作用:判断两个时间的先后
Date date = new Date();
System.out.println(date);
Date date1 = new Date(2000);
System.out.println(date1);
System.out.println(date.after(date1));//返回true
System.out.println(date1.before(date));//返回true
二、DateFormat类和SimpleDateFormat类
先说明DateFormat
类和SimpleDateFormat
类的关系。DateFormat
类是一个抽象类,SimpleDateFormat
是它的子类。
作用: 把日期对象转换成指定格式的字符串。
2.1 构造器
DateFormat df1 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
DateFormat df2 = new SimpleDateFormat("yyyy-MM-dd");
2.2 format()方法
**作用:**将日期对象转换成字符串
// 将日期对象转换成字符串
Date date = new Date();
String strDate1 = df1.format(date);
System.out.println(strDate1);
String strDate2 = df2.format(date);
System.out.println(strDate2);
2.3 parse()方法
作用: 将指定格式字符串转换成日期对象
// 将指定格式的字符串,转换成日期对象
String strDate01 = "2029-07-18 12:43:23";
String strDate02 = "2029-07-18";
Date date01 = df1.parse(strDate01);
System.out.println("date01:" + date01);
Date date02 = df2.parse(strDate02);
System.out.println("date02:" + date02);
三、Calendar类和GregorianCalendar类
GregorianCalendar是Calendar的具体类,提供了世界上大多数国家和地区的标准日历系统。
注意!!! 月份表示一月是0,二月是1,十二月是11。父类Calendar
使用常量JANUARY
,FEBRUARY
来表示
3.1 get()方法
作用: 获取指定日期,年月日周等信息
Calendar calendar = new GregorianCalendar();
int year = calendar.get(Calendar.YEAR);
//这里0表示1月,1表示2月,...,11表示12月。
int month = calendar.get(Calendar.MONTH);
int day = calendar.get(Calendar.DAY_OF_MONTH);
//这里1表示周日,2表示周一,...,7表示周六
int weekday = calendar.get(Calendar.DAY_OF_WEEK);
3.2 set()方法
作用: 设置日期
// 设置日期
Calendar calendar2 = new GregorianCalendar();
calendar2.set(Calendar.YEAR,2019);
System.out.println(calendar2.get(Calendar.YEAR
3.3 add()方法
作用: 日期推算
// 日期推算
Calendar calendar3 = new GregorianCalendar();
calendar3.add(Calendar.YEAR,2);
System.out.println(calendar3.get(Calendar.YEAR));
3.4 getTime()方法和setTime()方法
作用: Date对象和Calendar对象相互转换
// calendar对象变成日期对象
Date date = calendar3.getTime();
Calendar calendar4 = new GregorianCalendar();
// 日期对象变成calendar对象
calendar4.setTime(new Date());
四、可视化日历例子
结果
代码
package cn.edu.ucas.gqlearn;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Scanner;
/**
* @Author: hyk
* @Date: 2020/7/18
* @version: 1.0
*/
public class ViewCalendar {
public static void main(String[] args) throws ParseException {
System.out.println("请输入日期(格式为:2020-07-18)");
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
// 1. 解析字符串为date
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
Date date = df.parse(str);
// 2. 将date转为Calendar类型
Calendar calendar = new GregorianCalendar();
calendar.setTime(date);
// 3. 当前是几号
int currentDate = calendar.get(Calendar.DAY_OF_MONTH);
int daysOfMonth = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
// 4. 将时间设为当月1日
calendar.set(Calendar.DAY_OF_MONTH,1);
System.out.print("日\t" + "一\t" + "二\t" + "三\t" + "四\t" + "五\t" + "六\t" );
System.out.println();
for (int i = 1; i < calendar.get(Calendar.DAY_OF_WEEK); i++) {
System.out.print("\t");
}
for (int i = 1; i <= daysOfMonth; i++) {
if(currentDate == i){
System.out.print(i + "*\t");
}else{
System.out.print(i + "\t");
}
if (calendar.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY){
System.out.println();
}
calendar.add(Calendar.DAY_OF_MONTH,1);
}
}
}