1. Date日期类
类 Date 表示一个特定的瞬间,精确到毫秒
1.1 Date的构造函数
Date() 分配一个 Date 对象,以表示分配它的时间(精确到毫秒) Date(long date) 分配一个 Date 对象,表示自从标准基准时间起指定时间的毫秒数 标准基准时间:称为“历元(epoch)”,即 1970 年 1 月 1 日 00:00:00
1.2 Date的构造函数练习
创建包:cn.cxy.date 创建类:TestDate1
package cn.cxy.date;
import java.util.Date;
public class TestDate1 {
public static void main(String[] args) {
Date d1= new Date();
System.out.println(d1);
long t = 1000*60*60;
Date d2 = new Date(t);
System.out.println(d2);
}
}
常用时间缩写 GMT 格林尼治时间 = UTC 协调世界时间 UTC + 时区差 = 本地时间,我们是在东八区,东加西减,所以 CST 中国标准时间:China Standard Time UT+8:00
1.3 Date的常用方法练习
getTime() 返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒值 setTime(long time) 设置时间,表示 1970 年 1 月 1 日 00:00:00 GMT 后的毫秒值
创建包:cn.cxy.date 创建类:TestDate2
package cn.cxy.date;
import java.util.Date;
public class TestDate2 {
public static void main(String[] args) {
Date d1 = new Date();
System.out.println(d1.getTime());
System.out.println(d1.getTime() * 1.0 / 1000 / 60 / 60 / 24 / 365);
System.out.println(d1);
long t = 1000*60*60;
d1.setTime(t);
System.out.println(d1);
}
}
2. SimpleDateFormat
SimpleDateFormat 常用于格式化和解析日期 日期和时间格式由日期和时间模式字符串指定,字母与日期时间的对应关系如下:
2.1 常用构造函数
SimpleDateFormat() 用默认模式的日期格式构造 SimpleDateFormat SimpleDateFormat(String pattern) 用给定模式的日期格式构造 SimpleDateFormat
2.2 日期转换格式工具类练习
创建包:cn.cxy.date 创建类:TestSDF.java
package cn.cxy.date;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class TestSDF {
public static void main(String[] args) throws ParseException {
Date d = new Date();
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy/MM/dd hh:mm:ss");
String s = sdf2.format(d);
System.out.println(s);
String s2 = "2021/9/23 22:24:03";
SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy/MM/dd hh:mm:ss");
Date d2= sdf3.parse(s2);
System.out.println(d2);
}
}
2.3 日期转换综合练习
创建包:cn.cxy.date2 创建工具类:DateUtils.java
package cn.cxy.date2;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateUtils {
private DateUtils(){}
public static String dateToString(Date date, String format){
SimpleDateFormat sdf = new SimpleDateFormat(format);
String s = sdf.format(date);
return s;
}
public static Date stringToDate(String s, String format) throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat(format);
Date d = sdf.parse(s);
return d;
}
}
创建包:cn.cxy.date2 创建测试类:TestDate.java
package cn.cxy.date2;
import java.text.ParseException;
import java.util.Date;
public class TestDate {
public static void main(String[] args) throws ParseException {
Date d = new Date();
String s = DateUtils.dateToString(d, "yyyy年MM月dd日 HH:mm:ss");
String s2 = DateUtils.dateToString(d, "yyyy年MM月dd日");
String s3 = DateUtils.dateToString(d, "HH:mm:ss");
System.out.println(s);
System.out.println(s2);
System.out.println(s3);
Date d2 = DateUtils.stringToDate(s, "yyyy年MM月dd日 HH:mm:ss");
System.out.println(d2);
}
}
3.Calendar日历类
3.1 概念
Calendar 类是一个抽象类,不可直接实例化,但是它有一个直接已知子类GregorianCalendar 它为特定瞬间与还有比如年月日等日历字段之间的转换和操作提供了一些方法
3.2 常用方法
Calendar提供了一个方法getInstance()用于获取Calendar对象,它的日历字段就是当前的日期
int get(int field) 返回给定日历字段的值 abstract void add(int field, int amount) 根据日历的规则,为给定的日历字段添加或减去指定的时间量 void set(int year, int month, int date) 设置日历字段 YEAR、MONTH 和 DAY_OF_MONTH 的值
3.3 入门案例
创建包:cn.cxy.date3 创建类:TestCalendar.java
package cn.cxy.date3;
import org.junit.Test;
import java.util.Calendar;
public class TestCalendar {
@Test
public void TestGet(){
Calendar c = Calendar.getInstance();
System.out.println(c);
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH)+1;
int day = c.get(Calendar.DAY_OF_MONTH);
System.out.println(year + "年" + month + "月" + day + "日");
}
@Test
public void TestAdd1(){
Calendar c = Calendar.getInstance();
c.add(Calendar.YEAR,+10);
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH)+1;
int day = c.get(Calendar.DAY_OF_MONTH);
System.out.println(year + "年" + month + "月" + day + "日");
}
@Test
public void TestAdd2(){
Calendar c = Calendar.getInstance();
c.add(Calendar.YEAR,+1);
c.add(Calendar.DAY_OF_MONTH,+7);
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH)+1;
int day = c.get(Calendar.DAY_OF_MONTH);
System.out.println(year + "年" + month + "月" + day + "日");
}
@Test
public void TestSet(){
Calendar c = Calendar.getInstance();
c.set(2099,9,1);
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH)+1;
int day = c.get(Calendar.DAY_OF_MONTH);
System.out.println(year + "年" + month + "月" + day + "日");
}
}
3.4 巩固案例
创建包:cn.cxy.date3 创建类:TestCalendar.java 需求:用户任意输入一个年份,输出这年的2月有多少天
package cn.cxy.date3;
import java.util.Calendar;
import java.util.Scanner;
public class TestFeb {
public static void main(String[] args) {
System.out.println("请您输入要查询的年份:");
int year = new Scanner(System.in).nextInt();
Calendar c = Calendar.getInstance();
c.set(year, 2, 1);
c.add(Calendar.DATE, -1);
int date = c.get(Calendar.DATE);
System.out.println(year + "年的2月有" + date + "天");
}
}
|