Java常用类:时间日期
Java常用类:时间日期
Date
-
Date表示特定的瞬间,精确到毫秒
-
Date 类中的大部分方法都已经被 Calendar 类中的方法所取代
-
示例:
import java.util.Date; public class Demo01 { public static void main(String[] args) { //1.创建Date对象 //今天 Date date1 = new Date(); System.out.println(date1.toString()); //使用toString();显示日期时间 System.out.println(date1.toLocaleString());//toLocaleString();已过时 //昨天 Date date2 = new Date(date1.getTime() - (60*60*24*1000)); System.out.println(date2.toLocaleString());//toLocaleString();已过时 //2.方法 // after(); 判断Date对象是否在指定日期之后 // before(); 判断Date对象是否在指定日期之前 boolean after = date1.after(date2); boolean before = date2.before(date1); System.out.println(after); System.out.println(before); //compareTo();比较日期 int i = date1.compareTo(date2); System.out.println(i); //equals();比较是否相等 boolean equals = date1.equals(date2); System.out.println(equals); } }
输出
Fri Apr 16 21:24:01 CST 2021 2021年4月16日 下午9:24:01 2021年4月15日 下午9:24:01 true true 1 false
Calendar
-
Calendar 提供了获取或设置各种日历字段的方法
-
构造方法:
protected Calendar();
修饰符是 protected ,所以无法直接创建该对象- 需要通过
Calendar.getInstance();
来创建对象
-
Calendar 类是一个抽象类,在实际使用时实现特定的子类的对象,创建对象的过程对程序员来说是透明的,只需要使用 getInstance() 方法创建即可
-
Calendar类对象字段类型
常量 | 描述 |
---|---|
Calendar.YEAR | 年份 |
Calendar.MONTH | 月份 |
Calendar.DATE 或 Calendar.DAY_OF_MONTH | 日期 |
Calendar.HOUR | 12小时制的小时 |
Calendar.HOUR_OF_DAY | 24小时制的小时 |
Calendar.MINUTE | 分钟 |
Calendar.SECOND | 秒 |
Calendar.DAY_OF_WEEK | 星期 |
-
示例:
import java.util.Calendar; public class Demo01 { public static void main(String[] args) { //创建Calender对象 Calendar calendar = Calendar.getInstance(); System.out.println(calendar.getTime().toLocaleString()); System.out.println(calendar.getTimeInMillis());//1970年到现在的毫秒值 //获取时间信息 //获取年 int year = calendar.get(Calendar.YEAR); //获取月 0-11 int month = calendar.get(Calendar.MONTH)+1; //获取日 int day = calendar.get(Calendar.DAY_OF_MONTH);//DAY_OF_MONTH 或 DATE 都可以 //获取小时 int hour = calendar.get(Calendar.HOUR_OF_DAY);//HOUR 是12小时样式的,HOUR_OF_DAY 是24小时样式 //获取分钟 int minute = calendar.get(Calendar.MINUTE); //获取秒 int second = calendar.get(Calendar.SECOND); System.out.println(year+"年"+month+"月"+day+"日"+hour+":"+minute+":"+second); //修改时间 Calendar calendar1 = Calendar.getInstance(); calendar1.set(Calendar.DAY_OF_MONTH,15); System.out.println(calendar1.getTime().toLocaleString()); //add();方法修改时间 calendar1.add(Calendar.HOUR,1); System.out.println(calendar1.getTime().toLocaleString()); //getActualMaximum();获取当月日期最大天数 //getActualMinimum();获取当月日期最小天数 int max = calendar1.getActualMaximum(Calendar.DAY_OF_MONTH); int min = calendar1.getActualMinimum(Calendar.DAY_OF_MONTH); System.out.println(max); System.out.println(min); } }
输出
```java
2021年4月16日 下午11:38:43
1618587523635
2021年4月16日23:38:43
2021年4月15日 下午11:38:43
2021年4月16日 上午12:38:43
30
1
SimpleDateFormat
-
SimpleDateFormat 是一个以与语言环境有关的方式来格式化和解析日期的具体类
-
进行格式化(日期->文本),解析(文本->日期)
-
常用的时间模式字母
字母 日期或时间 示例 y 年 2021 M 年中的月份 04 d 月中的天数 17 H 1天中小时数(0-23) 22 m 分钟 34 s 秒 57 S 毫秒 233 -
示例:
import java.text.SimpleDateFormat; import java.util.Date; public class Demo01 { public static void main(String[] args) throws Exception { //1.创建SimpleDateFormat对象 SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss"); //2.创建Date对象 Date date = new Date(); //格式化Date对象(时间->字符串) String format = simpleDateFormat.format(date); System.out.println(format); //解析(字符串->时间) Date parse = simpleDateFormat.parse("2020年02月20日 20:02:20"); System.out.println(parse); } }
输出
2021年04月17日 10:23:23 Thu Feb 20 20:02:20 CST 2020
*拓展:输入日期查看日历
-
需求:输入日期返回日历
-
示例:
import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.Scanner; public class Assignment { public static void main(String[] args) throws Exception { //读入字符串 Scanner scanner = new Scanner(System.in); System.out.print("请输入你想要查看的日期(例如:2021-04-17 或 2021-4-17):"); String strDate = scanner.next(); //String --> Calendar: //String --> Date //"yyyy-MM-dd"为设置时间格式 Date date = new SimpleDateFormat("yyyy-MM-dd").parse(strDate); //Date --> Calendar Calendar cal = Calendar.getInstance(); cal.setTime(date); //打印表头(星期) System.out.println("日\t一\t二\t三\t四\t五\t六"); //获取半月的最大天数 int maxDay = cal.getActualMaximum(Calendar.DAY_OF_MONTH); //获取当前日期的日 int nowDay = cal.get(Calendar.DAY_OF_MONTH); //将日期调为本月的1号 cal.set(Calendar.DAY_OF_MONTH,1); //获取本月的一号是星期几 int currentWeek = cal.get(Calendar.DAY_OF_WEEK); //设置前面空出来的天数 int day = currentWeek - 1; //引入计数器 int count = 0; //在日期前打印空格 for (int i = 0; i < day; i++) { System.out.print("\t"); } //空出来的也要计入计数器 count += day; //遍历天数(从1号到 maxDay) for (int i = 1; i <= maxDay; i++) { if (i == nowDay) { System.out.print(i+"*\t");//在日历中标记当前日期 }else { System.out.print(i+"\t"); } count++;//每在控制台输出一个数字,计数器+1 if (count%7 == 0) { System.out.println(); } } } }
控制台
请输入你想要查看的日期(例如:2021-04-17 或 2021-4-17):2021-4-17 日 一 二 三 四 五 六 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17* 18 19 20 21 22 23 24 25 26 27 28 29 30