Date、Calender和SimpleDateFormat

1、Date

类 Date 表示特定的瞬间,精确到毫秒。

Date date = new Date();
System.out.println(date);
Date date2 = new Date(123213421434l);
System.out.println(date2);

运行结果:

E:\java\Java\jdk1.8.0_281\bin\java.exe "-javaagent:D:\App\JetBrains\IntelliJ IDEA 2022.3\lib\idea_rt.jar=56447:D:\App\JetBrains\IntelliJ IDEA 2022.3\bin" -Dfile.encoding=UTF-8 -classpath E:\java\Java\jdk1.8.0_281\jre\lib\charsets.jar;E:\java\Java\jdk1.8.0_281\jre\lib\deploy.jar;E:\java\Java\jdk1.8.0_281\jre\lib\ext\access-bridge-64.jar;E:\java\Java\jdk1.8.0_281\jre\lib\ext\cldrdata.jar;E:\java\Java\jdk1.8.0_281\jre\lib\ext\dnsns.jar;E:\java\Java\jdk1.8.0_281\jre\lib\ext\jaccess.jar;E:\java\Java\jdk1.8.0_281\jre\lib\ext\jfxrt.jar;E:\java\Java\jdk1.8.0_281\jre\lib\ext\localedata.jar;E:\java\Java\jdk1.8.0_281\jre\lib\ext\nashorn.jar;E:\java\Java\jdk1.8.0_281\jre\lib\ext\sunec.jar;E:\java\Java\jdk1.8.0_281\jre\lib\ext\sunjce_provider.jar;E:\java\Java\jdk1.8.0_281\jre\lib\ext\sunmscapi.jar;E:\java\Java\jdk1.8.0_281\jre\lib\ext\sunpkcs11.jar;E:\java\Java\jdk1.8.0_281\jre\lib\ext\zipfs.jar;E:\java\Java\jdk1.8.0_281\jre\lib\javaws.jar;E:\java\Java\jdk1.8.0_281\jre\lib\jce.jar;E:\java\Java\jdk1.8.0_281\jre\lib\jfr.jar;E:\java\Java\jdk1.8.0_281\jre\lib\jfxswt.jar;E:\java\Java\jdk1.8.0_281\jre\lib\jsse.jar;E:\java\Java\jdk1.8.0_281\jre\lib\management-agent.jar;E:\java\Java\jdk1.8.0_281\jre\lib\plugin.jar;E:\java\Java\jdk1.8.0_281\jre\lib\resources.jar;E:\java\Java\jdk1.8.0_281\jre\lib\rt.jar;E:\javacode\Learning\out\production\Learning;C:\Users\13451\.m2\repository\org\jetbrains\kotlin\kotlin-stdlib-jdk8\1.7.20\kotlin-stdlib-jdk8-1.7.20.jar;C:\Users\13451\.m2\repository\org\jetbrains\kotlin\kotlin-stdlib\1.7.20\kotlin-stdlib-1.7.20.jar;C:\Users\13451\.m2\repository\org\jetbrains\kotlin\kotlin-stdlib-common\1.7.20\kotlin-stdlib-common-1.7.20.jar;C:\Users\13451\.m2\repository\org\jetbrains\annotations\13.0\annotations-13.0.jar;C:\Users\13451\.m2\repository\org\jetbrains\kotlin\kotlin-stdlib-jdk7\1.7.20\kotlin-stdlib-jdk7-1.7.20.jar Learning.Time.DateOrCalendar
Wed Feb 01 14:06:57 CST 2023
Tue Nov 27 09:57:01 CST 1973

Process finished with exit code 0

2、Calender

Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR 、 MONTH 、 DAY_OF_MONTH 、 HOUR 等 日
历字段 之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。瞬
间可用毫秒值来表示,它是距历元(即格林威治标准时间 1970 年 1 月 1 日的 00:00:00.000,格里高利
历)的偏移量。
代码:

		//Calendar c = Calendar.getInstance(TimeZone.getTimeZone(“GMT+08:00”));//获取东八区时间
		Calendar c = Calendar.getInstance();//获得当前时间(Calendar格式)
        System.out.println(c);
        System.out.println(c.get(Calendar.YEAR));//获得时间的年份
        System.out.println(c.get(Calendar.MONTH));//获得时间的月份,0表示1月份,实际使用中要加1才是当前的月份
        System.out.println(c.get(Calendar.DAY_OF_MONTH));//获取当前天数
        System.out.println(c.getActualMinimum(c.DAY_OF_MONTH));//获取本月最小天数
        System.out.println(c.getActualMaximum(c.DAY_OF_MONTH));//获取本月最大天数
        System.out.println(c.get(Calendar.DAY_OF_WEEK));
        System.out.println(c.get(Calendar.DAY_OF_YEAR));
        System.out.println(c.get(Calendar.HOUR));
        System.out.println(c.get(Calendar.HOUR_OF_DAY));//获得当前时间的小时
        System.out.println(c.get(Calendar.MINUTE));//获得当前时间的分钟数
        System.out.println(c.get(Calendar.SECOND));//获取当前秒
        c.add(Calendar.YEAR, 1);//年份加1
        c.add(Calendar.MONTH, 1);//月份加1
        c.add(Calendar.DAY_OF_MONTH, 1);//天数加1
        System.out.println(c.get(Calendar.YEAR));
        System.out.println(c.get(Calendar.MONTH) + 1);
        System.out.println(c.get(Calendar.DAY_OF_MONTH));

运行结果:

E:\java\Java\jdk1.8.0_281\bin\java.exe "-javaagent:D:\App\JetBrains\IntelliJ IDEA 2022.3\lib\idea_rt.jar=57919:D:\App\JetBrains\IntelliJ IDEA 2022.3\bin" -Dfile.encoding=UTF-8 -classpath E:\java\Java\jdk1.8.0_281\jre\lib\charsets.jar;E:\java\Java\jdk1.8.0_281\jre\lib\deploy.jar;E:\java\Java\jdk1.8.0_281\jre\lib\ext\access-bridge-64.jar;E:\java\Java\jdk1.8.0_281\jre\lib\ext\cldrdata.jar;E:\java\Java\jdk1.8.0_281\jre\lib\ext\dnsns.jar;E:\java\Java\jdk1.8.0_281\jre\lib\ext\jaccess.jar;E:\java\Java\jdk1.8.0_281\jre\lib\ext\jfxrt.jar;E:\java\Java\jdk1.8.0_281\jre\lib\ext\localedata.jar;E:\java\Java\jdk1.8.0_281\jre\lib\ext\nashorn.jar;E:\java\Java\jdk1.8.0_281\jre\lib\ext\sunec.jar;E:\java\Java\jdk1.8.0_281\jre\lib\ext\sunjce_provider.jar;E:\java\Java\jdk1.8.0_281\jre\lib\ext\sunmscapi.jar;E:\java\Java\jdk1.8.0_281\jre\lib\ext\sunpkcs11.jar;E:\java\Java\jdk1.8.0_281\jre\lib\ext\zipfs.jar;E:\java\Java\jdk1.8.0_281\jre\lib\javaws.jar;E:\java\Java\jdk1.8.0_281\jre\lib\jce.jar;E:\java\Java\jdk1.8.0_281\jre\lib\jfr.jar;E:\java\Java\jdk1.8.0_281\jre\lib\jfxswt.jar;E:\java\Java\jdk1.8.0_281\jre\lib\jsse.jar;E:\java\Java\jdk1.8.0_281\jre\lib\management-agent.jar;E:\java\Java\jdk1.8.0_281\jre\lib\plugin.jar;E:\java\Java\jdk1.8.0_281\jre\lib\resources.jar;E:\java\Java\jdk1.8.0_281\jre\lib\rt.jar;E:\javacode\Learning\out\production\Learning;C:\Users\13451\.m2\repository\org\jetbrains\kotlin\kotlin-stdlib-jdk8\1.7.20\kotlin-stdlib-jdk8-1.7.20.jar;C:\Users\13451\.m2\repository\org\jetbrains\kotlin\kotlin-stdlib\1.7.20\kotlin-stdlib-1.7.20.jar;C:\Users\13451\.m2\repository\org\jetbrains\kotlin\kotlin-stdlib-common\1.7.20\kotlin-stdlib-common-1.7.20.jar;C:\Users\13451\.m2\repository\org\jetbrains\annotations\13.0\annotations-13.0.jar;C:\Users\13451\.m2\repository\org\jetbrains\kotlin\kotlin-stdlib-jdk7\1.7.20\kotlin-stdlib-jdk7-1.7.20.jar Learning.Time.DateOrCalendar
java.util.GregorianCalendar[time=1675232647583,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=31,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2023,MONTH=1,WEEK_OF_YEAR=5,WEEK_OF_MONTH=1,DAY_OF_MONTH=1,DAY_OF_YEAR=32,DAY_OF_WEEK=4,DAY_OF_WEEK_IN_MONTH=1,AM_PM=1,HOUR=2,HOUR_OF_DAY=14,MINUTE=24,SECOND=7,MILLISECOND=583,ZONE_OFFSET=28800000,DST_OFFSET=0]
2023
1
1
1
28
4
32
2
14
24
7
2024
3
2

Process finished with exit code 0

3、SimpleDateFormat

SimpleDateFormat 是一个以与语言环境有关的方式来格式化和解析日期的具体类。它允许进行格式化
(日期 -> 文本)、解析(文本 -> 日期)和规范化。
代码:

		Date ss = new Date();
        System.out.println("一般日期输出:" + ss);
        System.out.println("时间戳:" + ss.getTime());
        SimpleDateFormat format0 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String time = format0.format(ss.getTime());//这个就是把时间戳经过处理得到期望格式的时间
        System.out.println("格式化结果0:" + time);
        SimpleDateFormat format1 = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
        time = format1.format(ss.getTime());
        System.out.println("格式化结果1:" + time);
        // 字符串转换为时间类型
        String str = "2020-10-21 12:12:21";
        SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        System.out.println(sdf1.parse(str));

运行结果:

E:\java\Java\jdk1.8.0_281\bin\java.exe "-javaagent:D:\App\JetBrains\IntelliJ IDEA 2022.3\lib\idea_rt.jar=52974:D:\App\JetBrains\IntelliJ IDEA 2022.3\bin" -Dfile.encoding=UTF-8 -classpath E:\java\Java\jdk1.8.0_281\jre\lib\charsets.jar;E:\java\Java\jdk1.8.0_281\jre\lib\deploy.jar;E:\java\Java\jdk1.8.0_281\jre\lib\ext\access-bridge-64.jar;E:\java\Java\jdk1.8.0_281\jre\lib\ext\cldrdata.jar;E:\java\Java\jdk1.8.0_281\jre\lib\ext\dnsns.jar;E:\java\Java\jdk1.8.0_281\jre\lib\ext\jaccess.jar;E:\java\Java\jdk1.8.0_281\jre\lib\ext\jfxrt.jar;E:\java\Java\jdk1.8.0_281\jre\lib\ext\localedata.jar;E:\java\Java\jdk1.8.0_281\jre\lib\ext\nashorn.jar;E:\java\Java\jdk1.8.0_281\jre\lib\ext\sunec.jar;E:\java\Java\jdk1.8.0_281\jre\lib\ext\sunjce_provider.jar;E:\java\Java\jdk1.8.0_281\jre\lib\ext\sunmscapi.jar;E:\java\Java\jdk1.8.0_281\jre\lib\ext\sunpkcs11.jar;E:\java\Java\jdk1.8.0_281\jre\lib\ext\zipfs.jar;E:\java\Java\jdk1.8.0_281\jre\lib\javaws.jar;E:\java\Java\jdk1.8.0_281\jre\lib\jce.jar;E:\java\Java\jdk1.8.0_281\jre\lib\jfr.jar;E:\java\Java\jdk1.8.0_281\jre\lib\jfxswt.jar;E:\java\Java\jdk1.8.0_281\jre\lib\jsse.jar;E:\java\Java\jdk1.8.0_281\jre\lib\management-agent.jar;E:\java\Java\jdk1.8.0_281\jre\lib\plugin.jar;E:\java\Java\jdk1.8.0_281\jre\lib\resources.jar;E:\java\Java\jdk1.8.0_281\jre\lib\rt.jar;E:\javacode\Learning\out\production\Learning;C:\Users\13451\.m2\repository\org\jetbrains\kotlin\kotlin-stdlib-jdk8\1.7.20\kotlin-stdlib-jdk8-1.7.20.jar;C:\Users\13451\.m2\repository\org\jetbrains\kotlin\kotlin-stdlib\1.7.20\kotlin-stdlib-1.7.20.jar;C:\Users\13451\.m2\repository\org\jetbrains\kotlin\kotlin-stdlib-common\1.7.20\kotlin-stdlib-common-1.7.20.jar;C:\Users\13451\.m2\repository\org\jetbrains\annotations\13.0\annotations-13.0.jar;C:\Users\13451\.m2\repository\org\jetbrains\kotlin\kotlin-stdlib-jdk7\1.7.20\kotlin-stdlib-jdk7-1.7.20.jar Learning.Time.DateOrCalendar
一般日期输出:Wed Feb 01 14:29:22 CST 2023
时间戳:1675232962709
格式化结果02023-02-01 14:29:22
格式化结果120230201142922Wed Oct 21 12:12:21 CST 2020

Process finished with exit code 0

4、 Date与Calender之间的转换

  1. Calendar转换成Date
Calendar calendar = Calendar.getInstance();//获得当前时间
Date date = calendar.getTime;
  1. Date 转换成 Calendar
Date date = new Date();
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
  1. SimpleDateFormat
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String date = sdf.format(new Date());

5、Java实现Date日期加一天

// 获取当前时间,先转成Calendar,在进行加减操作
Date date = new Date();
Calendar calendar = new GregorianCalendar();
calendar.setTime(date);
// 把日期往后增加一天,整数  往后推,负数往前移动
calendar.add(Calendar.DATE, 1);
// 这个时间就是日期往后推一天的结果
date = calendar.getTime();

calendar.setTime(date);//将date转化为calendar
calendar.set(Calendar.DAY_OF_MONTH,1);//设置为每月的一号
calendar.add(Calendar.MONTH,-1);//使得月份减一

猜你喜欢

转载自blog.csdn.net/qq_44275015/article/details/127406684
今日推荐