标签: Java SimpleDateFormat println 日期 Date Calendar out
目录
一、Date类
1.1 Date类简单介绍
位于Java.util包下,注意不要导错,在Java.sql包下也有一个Date类 Date 类 用于表示一个特定的时间点。它是 Java 中最基本的日期类,提供了多种方法来获取和设置日期和时间的各个部分。注意:Date类中大部分操作日期的方法都被Calendar类代替了,Date类现在主要用于获取日期对象,那么我们接下来主要来介绍一下Date类的构造方法,是如何来创建对象的。 下图可以看到大部分方法都过时了。
1.2 Date类的构造方法
上图发现,仅有两个构造方法未过时,那么我们就针对这两个展开来讲一下。
方法签名 方法描述 Date() 分配 Date 对象并初始化此对象,以表示分配它的时间(精确到毫秒) Date(long date) 分配 Date 对象并初始化此对象,以表示自从标准基准时间(称为“历元(epoch)”,即 1970 年 1 月 1 日 00:00:00 GMT)以来的指定毫秒数。
代码演示
//获得当前时间对象
Date date = new Date();
System.out.println(date);//Sun Jun 09 22:10:52 CST 2024
//获取从1970-1-1加指定的毫末值的对象,即从1970-1-1加上传入的毫秒值
Date date1 = new Date(10*24*60*60*1000);
// 一秒 = 1000ms,那么指定的毫秒值10*24*60*60*1000就是10天,
// 获得日期就是1970-1-11
System.out.println(date1);//Sun Jan 11 08:00:00 CST 1970
//创建日期格式化对象
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
System.out.println(simpleDateFormat.format(date));// 2024-06-09
System.out.println(simpleDateFormat.format(date1));// 1970-01-11
在演示代码中发现正常打印日期对象,输出为Sun Jan 11 08:00:00 CST 1970
这是国际日期,不太符合中国人的日期,所以就用到了SimpleDateFormat日期格式化类,来打印出适合中国人看的日期,那么接下就讲一下SimpleDateFormat日期格式化类如何使用
二、SimpleDateFormat 日期格式化类
2.1 SimpleDateFormat 日期格式化类简单介绍
SimpleDateFormat 类是用于格式化和解析日期的类 。 可以将日期对象转换为指定格式的字符串。 可以将字符串解析为日期对象。 可以自定义日期格式。
2.2 构造方法
方法签名 方法描述 SimpleDateFormat() 用默认的模式和默认语言环境的日期格式符号构造对象 SimpleDateFormat(String pattern) 用给定的模式和默认语言环境的日期格式符号构造对象 SimpleDateFormat(String pattern, DateFormatSymbols formatSymbols) 用给定的模式和日期符号构造对象 SimpleDateFormat(String pattern, Locale locale) 用给定的模式和给定语言环境的默认日期格式符号构造对象
代码演示
// 无参数构造方法
SimpleDateFormat sdf1 = new SimpleDateFormat();
Date date1 = new Date();
String str1 = sdf1.format(date1);
System.out.println("默认日期格式:" + str1);// 默认日期格式:24-6-9 下午10:41
// 带字符串参数构造方法
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date2 = new Date();
String str2 = sdf2.format(date2);
System.out.println("自定义日期格式:" + str2); // 自定义日期格式:2024-06-09 22:41:04
// 带字符串和Locale参数构造方法
//pattern - 描述日期和时间格式的模式
//locale - 其日期格式符号要被使用的语言环境
SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA);//中国语言环境
Date date3 = new Date();
String str3 = sdf3.format(date3);
System.out.println("自定义日期格式和Locale:" + str3);// 自定义日期格式和Locale:2024-06-09 22:41:04
// 带DateFormatSymbols参数构造方法
//pattern - 描述日期和时间格式的模式
//formatSymbols - 要用来格式化的日期格式符号
DateFormatSymbols dfs = new DateFormatSymbols(); //创建DateFormatSymbols对象,用于传入
SimpleDateFormat sdf4 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", dfs);
Date date4 = new Date();
String str4 = sdf4.format(date4);
System.out.println("自定义日期格式和DateFormatSymbols:" + str4);// 自定义日期格式和DateFormatSymbols:2024-06-09 22:41:04
日期格式化模板
日期模板 模板结果 “yyyy.MM.dd G ‘at’ HH:mm:ss z” 2001.07.04 AD at 12:08:56 PDT “EEE, MMM d, ''yy” Wed, Jul 4, '01 “h:mm a” 12:08 PM “hh ‘o’‘clock’ a, zzzz” 12 o’clock PM, Pacific Daylight Time “K:mm a, z” 0:08 PM, PDT “yyyyy.MMMMM.dd GGG hh:mm aaa” 02001.July.04 AD 12:08 PM “EEE, d MMM yyyy HH:mm:ss Z” Wed, 4 Jul 2001 12:08:56 -0700 “yyMMddHHmmssZ” 010704120856-0700 “yyyy-MM-dd’T’HH:mm:ss.SSSZ” 2001-07-04T12:08:56.235-0700 yyyy-MM-dd
2001-07-04 yyyy年MM月dd日 HH:mm:ss
2001-07-04 12:08:56 yy/M/d
01/7/4
红色字体为常用模板
常用方法
方法签名 方法描述 String format(Date date) 格式化日期对象为字符串 Date parse(String source) 解析字符串为日期对象 String toLocalizedPattern() 获取当前日期格式的本地化模式 String toPattern() 获取当前日期格式的模式
黄色标记为必会方法
代码演示
// format(Date date) 方法
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date1 = new Date();
String str1 = sdf1.format(date1);
System.out.println("格式化日期对象为字符串:" + str1);
// parse(String source) 方法
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String str2 = "2022-01-01 12:00:00";
try {
Date date2 = sdf2.parse(str2);
System.out.println("解析字符串为日期对象:" + date2);
} catch (ParseException e) {
e.printStackTrace();
}
// toLocalizedPattern() 方法
SimpleDateFormat sdf4 = new SimpleDateFormat();
String pattern4 = sdf4.toLocalizedPattern();
System.out.println("获取当前日期格式的本地化模式:" + pattern4);
// toPattern() 方法
SimpleDateFormat sdf5 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String pattern5 = sdf5.toPattern();
System.out.println("获取当前日期格式的模式:" + pattern5);
注意
在解析字符串 时,如果字符串不符合指定的日期格式,可能会抛出 ParseException 异常。 在使用parse方法方法时需要处理异常,该异常为编译期异常
三、Calendar类
3.1 简单介绍
Calendar 类是一个抽象类 ,它提供了一个通用的日期和时间操作接口 Calendar 类提供许多静态常量 可以用来获取当前日期和时间 可以用来设置日期和时间 可以用来计算日期和时间
抽象类不能new对象,那Calendar如何实例化呢?
3.2 创建对象
Calendar 提供了getInstance 静态方法以便于让我们来创建对象。
方法签名 方法描述 static Calendar getInstance() 使用默认时区和语言环境获得一个日历。 static Calendar getInstance(Locale aLocale) 使用默认时区和指定语言环境获得一个日历。 static Calendar getInstance(TimeZone zone) 使用指定时区和默认语言环境获得一个日历。 static Calendar getInstance(TimeZone zone, Locale aLocale) 使用指定时区和语言环境获得一个日历。
代码演示
// 获取当前日期和时间的 Calendar 对象
Calendar calendar = Calendar.getInstance();
System.out.println("当前日期和时间:" + calendar.getTime());
3.3 静态常量
常量签名 描述 Calendar.ERA ERA 表示纪元,只能为0或1。0表示BC(“before Christ”,即公元前);1表示AD(拉丁语“Anno Domini”,即公元)。 Calendar.YEAR 表示年份 Calendar.MONTH 表示月份,需要加1,因为0表示1月,1表示2月,以此类推 Calendar.HOUR 小时(12小时制) Calendar.HOUR_OF_DAY 一天中第几个小时(24小时制) Calendar.MINUTE 分钟 Calendar.SECOND 秒 Calendar.MILLISECOND 毫秒 Calendar.DAY_OF_YEAR 一年中第几天 DAY_OF_MONTH 一月中第几天 DAY_OF_WEEK 一周中第几天,注意,周日是1,周一是2,… Calendar.DATE 一月中第几天,同DAY_OF_MONTH的值是一样的 Calendar.DAY_OF_WEEK_IN_MONTH 当月内一周中的某天的序号 Calendar.WEEK_OF_YEAR 一年中的星期数,即本年中第几个星期 Calendar.WEEK_OF_MONTH 当前月中的星期数,即本月中第几个星期 Calendar.DAY_OF_WEEK_IN_MONTH 当前月中的第几个星期 Calendar.AM_PM AM_PM 是在中午之前还是在中午之后,在中午12点之前返回0,在中午12点(包括12点)之后返回1 Calendar.JANUARY 1月 Calendar.FEBRUARY 2月 Calendar.MARCH 3月 Calendar.APRIL 4月 Calendar.MAY 5月 Calendar.JUNE 6月 Calendar.JULY 7月 Calendar.AUGUST 8月 Calendar.SEPTEMBER 9月 Calendar.OCTOBER 10月 Calendar.NOVEMBER 11月 Calendar.DECEMBER 12月
3.4 常用方法
设置时间方法
方法签名 方法描述 void setFirstDayOfWeek(int value) 设置一星期的第一天是哪一天;例如,在中国,这一天是周一,在美国,这一天是周日 void setLenient(boolean lenient) 指定日期/时间解释是否是宽松的。 void setMinimalDaysInFirstWeek(int value) 设置一年中第一个星期所需的最少天数,例如,如果定义第一个星期包含一年第一个月的第一天,则使用值 1 调用此方法。 void setTime(Date date) 使用给定的 Date 设置此 Calendar 的时间。 void setTimeInMillis(long millis) 用给定的 long 值设置此 Calendar 的当前时间值。 void setTimeZone(TimeZone value) 使用给定的时区值来设置时区。 void set(int field, int value) 将给定的日历字段设置为给定值。 void set(int year, int month, int date) 设置日历字段 YEAR、MONTH 和 DAY_OF_MONTH 的值。 void set(int year, int month, int date, int hourOfDay, int minute) 设置日历字段 YEAR、MONTH、DAY_OF_MONTH、HOUR_OF_DAY 和 MINUTE 的值。 void set(int year, int month, int date, int hourOfDay, int minute, int second) 设置字段 YEAR、MONTH、DAY_OF_MONTH、HOUR、MINUTE 和 SECOND 的值。
黄色为重要方法,下面只演示重要方法
代码演示
calendar.set(Calendar.YEAR, 2024);// 设置年份
calendar.set(Calendar.MONTH, 1);// 设置月份
calendar.set(Calendar.DAY_OF_MONTH, 1); // 设置日份
System.out.println("设置后的日期和时间:" + calendar.getTime());// 设置后的日期和时间:Thu Feb 01 23:43:12 CST 2024
calendar1.set(2024,4,31);// 注意:实际月份为指定数字+1
System.out.println(simpleDateFormat.format(calendar1.getTime()));//2024-05-31
发现Calendar也需要格式化日期,所以SimpleDateFormat 很重要!
获得日期方法
方法签名 方法描述 int get(int field) 返回给定日历字段的值。 Date getTime() 返回一个表示此 Calendar 时间值(从历元至现在的毫秒偏移量)的 Date 对象
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH);
int day = calendar.get(Calendar.DAY_OF_MONTH);
System.out.println("年份:" + year + ", 月份:" + month + ", 日份:" + day);
System.out.println("当前日期和时间:" + calendar.getTime());
日期比较方法
方法签名 方法描述 boolean equals(Object obj) 将此 Calendar 与指定 Object 比较。 boolean after(Object when) 判断此 Calendar 表示的时间是否在指定 Object 表示的时间之后,返回判断结果。 boolean before(Object when) 判断此 Calendar 表示的时间是否在指定 Object 表示的时间之前,返回判断结果。 int compareTo(Calendar anotherCalendar) 比较两个 Calendar 对象表示的时间值(从历元至现在的毫秒偏移量)。
代码演示
// after(Object when) 方法
Calendar calendar1 = Calendar.getInstance();
calendar1.set(2024, 1, 1);
Calendar calendar2 = Calendar.getInstance();
calendar2.set(2024, 1, 2);
boolean after = calendar1.after(calendar2);
System.out.println("calendar1 是否在 calendar2 之后:" + after);//calendar1 是否在 calendar2 之后:false
// before(Object when) 方法
boolean before = calendar1.before(calendar2);
System.out.println("calendar1 是否在 calendar2 之前:" + before);//calendar1 是否在 calendar2 之前:true
// compareTo(Calendar anotherCalendar) 方法
int compareTo = calendar1.compareTo(calendar2);
System.out.println("calendar1 与 calendar2 的比较结果:" + compareTo);//calendar1 与 calendar2 的比较结果:-1
// equals(Object obj) 方法
Calendar calendar3 = Calendar.getInstance();
calendar3.set(2024, 1, 1);
boolean equals = calendar1.equals(calendar3);
System.out.println("calendar1 是否与 calendar3 相等:" + equals);//calendar1 是否与 calendar3 相等:true
改变日期方法
方法签名 方法描述 abstract void add(int field, int amount) 根据日历的规则,为给定的日历字段添加或减去指定的时间量。
// 增加日期和时间的指定字段
calendar.add(Calendar.DAY_OF_MONTH, 1); // 增加一天
System.out.println("增加一天后的日期和时间:" + calendar.getTime());
calendar.add(Calendar.MONTH, 1); // 增加一个月
System.out.println("增加一个月后的日期和时间:" + calendar.getTime());
calendar.add(Calendar.YEAR, 1); // 增加一年
System.out.println("增加一年的日期和时间:" + calendar.getTime());
// 减少日期和时间的指定字段
calendar.add(Calendar.DAY_OF_MONTH, -1); // 减少一天
System.out.println("减少一天后的日期和时间:" + calendar.getTime());
calendar.add(Calendar.MONTH, -1); // 减少一个月
System.out.println("减少一个月后的日期和时间:" + calendar.getTime());
calendar.add(Calendar.YEAR, -1); // 减少一年
System.out.println("减少一年的日期和时间:" + calendar.getTime());
总结
日期类
Date
Calendar抽象类
SimpleDateFormat
作用:格式化日期,format方法,常用模板:yyyy-MM-dd
作用:用于获取日期对象,大部分方法被Calendar代替
通过getInstance方法获取对象,get,set,add,after,before,equals,compareTo等方法
最后
如果感觉有收获的话,点个赞
标签: Java ,
SimpleDateFormat ,
println ,
日期 ,
Date ,
Calendar ,
out
From: https://blog.csdn.net/m0_73940426/article/details/139566796