在Java中表示日期类型的类有二个:java.util.Date和java.util.Calendar类
一 . java.util.Date类:
表示日期的类。有点旧。有点老。
使用Date可以最快的获取系统当前时间。
1 . 构造方法:
(1) public Date() 获取系统当前时间。
(2) public Date(long date) 按1970.1.1到指定时间的毫秒值来获得系统时间。
public static void main(String[] args) {
Date date = new Date();//系统当前时间
System.out.println(date);
}
Fri Feb 17 16:54:05 CST 2023 格林尼治标准时间
2 . 常用方法:
public long getTime() 返回对象表示日期到1970.1.1的毫秒值。
使用毫秒值与其他日期类型进行转换。
二 . java.sql.Date类:
java.sql.Date类是一个用来表示数据库中日期类型的对象。
1 . 构造方法:
Date(long date) 使用给定的毫秒时间值构造一个Date对象。
public static void main(String[] args) {
Date date = new Date();//系统当前时间
System.out.println(date);
System.out.println(date.getTime());
//数据库中的Date
java.sql.Date d = new java.sql.Date(date.getTime());
System.out.println(d);
Date da = new Date(d.getTime());
}
三 . SimpleDateFormat类:
SimpleDateFormat是对Date数据类型进行格式化的类。
因为直接输出一个Date对象。日期格式是格林尼治标准时间。一般用户看不懂。
1 . 构造方法:
SimpleDateFormat(String pattern) 使用给定模式SimpleDateFormat并使用默认的 FORMAT语言环境的默认日期格式符号。
String pattern 这是一个模式字符串,使用一些标准的字母表示特定的日期字段。
Y 表示的是年
M 表示的是月
d 表示的是日期
H 24小时的小时
h 12小时的小时
m 分钟
s 秒
S 毫秒
2 . 常用方法:
publicfinal String format(Date date)
将日期格式化成日期/时间字符串。
public static void main(String[] args) {
Date date = new Date();//系统当前时间
SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒!");
String dateStr = format.format(date);
System.out.println(dateStr);
}
public Date parse(String source)throws ParseException
从给定字符串的开始解析文本以生成日期。 该方法可能不会使用给定字符串的整个文本。
public static void main(String[] args) {
Date date = new Date();//获取系统当前时间
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
//将一个日期类型转换为字符串
String format = sdf.format(date);
System.out.println(format);
String birthday = "2000-2-21";
try {
Date d = sdf.parse(birthday);
System.out.println(d);
} catch (ParseException e) {
e.printStackTrace();
}
}
三 . Calendar类:
以前Date类中提供了在日期中获取每一个日期数值的方法。例如:获取年份值,获取月份时,获取日期的值。
但Date有点老和旧。所以这些方法基本都不用的。
现在如果我们需要操作日期(加一个月,520天之后),获取日期数值,例如获取年份值,获取月份时。
就可以使用Calendar类。
1 . Calendar构造方法:
没有。Calendar是一个抽象类。
不用new关键字去创建实例。可以调用本类的静态方法,获取子类的实例。
2 . 常用方法:
(1) public static Calendar getInstance()
使用默认时区和区域设置获取日历。
Calendar calendar = Calendar.getInstance();//静态方法
(2) public int get(int field)
返回给定日历字段的值。例如:获取年份,获取月份,获取一年中的第几天。
参数 int field 是用来指明,你要获取的字段。是年份?还是月份?还是什么其他。
MONTH月份,值从0开始。与实际月份之间差1。
DAY_OF_WEEK星期。星期取值1-7。星期日是每周的第一天
(3) public final void set(int year,int month,int date)
publicfinal void set(int year, int month, int date,int hourOfDay, int minute, int second)
public void set(int field , int value)
设置给定日历字段的值
(4) publicabstract void add(int field,int amount)
根据日历的规则,将指定的时间量添加或减去给定的日历字段
calendar.set(Calendar.MONTH , 2);
System.out.println(calendar);
calendar.add(Calendar.DAY_OF_MONTH , -20);
System.out.println(calendar);
3 . 练习:输出系统当前日期。格式如下:yyyy年mm月dd日 星期一
int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);//星期取值1-7。星期日是每周的第一天。
System.out.println(dayOfWeek);
//输出系统当前日期。格式如下:yyyy年mm月dd日 星期一
String[] weeks = {"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
System.out.println(weeks[dayOfWeek-1]);