1.Date
java.util.Date是开发中常用的日期处理类(并非java.sql.Date类)
现在这么一个需求:
就是获取当前时区的时间
public class Main{public static void main(String[] args) {// d1和d2表示的时间都是一样的 所以推荐使用第一种写法 比较简洁Date d1 = new Date();Date d2 = new Date(System.currentTimeMillis());// 这种写法表示的是从1970.1.1 00:00:00经历了到现在的毫秒数的时间 即当前的时间System.out.println(d1);System.out.println(d2);}
}
从打印的结果来看 印证了我们的注释 打印结果中有一个CST/GMT+08:00 CST指的是中国标准时间(China Standard Time) 而GMT指的是格林尼治时间 由于英国和中国相差8个小时的时差 所以GMT+08:00相当于CST
1.Date的常用方法
public class Main{public static void main(String[] args) {// 以下是Date类的常用方法Date d1 = new Date();Date d2 = new Date();// 设置毫秒数d1.setTime(1000);// 单位是毫秒d2.setTime(2000);// 获取毫秒数System.out.println(d1.getTime());// 1000 单位是毫秒System.out.println(d2.getTime());// 2000// 比较前者是否晚于后者System.out.println(d1.after(d2));// false// 比较前者是否早于后者System.out.println(d1.before(d2));// true// 获取两者比较的结果System.out.println(d1.compareTo(d2));// <0}
}
2.SimpleDateFormat
我们可以通过java.text.SimpleDateFormat对日期的格式进行处理
public class Main{
public static void main(String[] args) throws ParseException {// 我们定义一个日期格式 用来格式化日期 格式化为指定的格式SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String str = sdf.format(new Date());System.out.println(str);// 当然对于已经格式化的日期 我们也可以对其进行解析 解析成日期格式Date d = sdf.parse(str);System.out.println(d);}
}
3.SimpleDateFormat的模式字母
2.Calendar
除了上述Date类可以用来帮助我们对日期进行处理以外 还可以通过java.util.Calendar对开发中的日期
进行处理
其中 值得注意的是:Calendar是一个抽象类 不能够被实例化 但是可以指向子类对象 而类内部正好有一个方法可以获取子类对象 即getInstance()方法 你可以通过查看jdk原码加以了解
并且Date类中很多过期的方法都迁移到了这里面 功能也会比Date更加丰富
public class Main {public static void main(String[] args) throws ParseException {Calendar c = Calendar.getInstance();// 获取当前时间的年份System.out.println(c.get(Calendar.YEAR));// 2024// 获取当前时间的月份 月份的取值范围为[0, 11]System.out.println(c.get(Calendar.MONTH));// 0// 获取当前时间的在一个月中的第几天 取值范围为[1, 31]System.out.println(c.get(Calendar.DAY_OF_MONTH));// 6// 获取当前时间在一个星期中的第几天 取值范围为[1, 7] 并且星期日才是一个星期的开始System.out.println(c.get(Calendar.DAY_OF_WEEK));// 7// 获取当前时间在一年中的第几天 取值范围为[1, 366]System.out.println(c.get(Calendar.DAY_OF_YEAR));// 6// 获取当前时间的小时数System.out.println(c.get(Calendar.HOUR));// 11// 获取当前时间的分钟数System.out.println(c.get(Calendar.MINUTE));// 23// 获取当前时间的秒数System.out.println(c.get(Calendar.SECOND));// 49// 获取当前时间的毫秒数System.out.println(c.get(Calendar.MILLISECOND));// 74}
}
1.Calendar的常用方法
public class Main {public static void main(String[] args) throws ParseException {Calendar c = Calendar.getInstance();// 设置时间为2019-7-6 原因在于月份的起始值为0 所以6表示7月份c.set(2019, 06, 06);// 接着就是在当前时间的基础上对参数进行添加操作// 对日进行追加 追加5天 时间为2019-7-11c.add(Calendar.DAY_OF_MONTH, 5);// 11System.out.println(c.get(Calendar.DAY_OF_MONTH));// 对月份进行追加 追加2个月 时间为2019-9-11c.add(Calendar.MONTH, 2);System.out.println(c.get(Calendar.MONTH));// 8// 再次设置时间 这次通过Date对象进行设置 设置时间为当前时间c.setTime(new Date());// 获取当前时间System.out.println(c.getTime());// 2024-1-6 11:32:23// 设置毫秒数c.setTimeInMillis(System.currentTimeMillis());// 设置时间为当前时间System.out.println(c.getTimeInMillis());// 获取毫秒数}
}
2.打印格式化
其中的本地化操作就是以本地的语言呈现当前所要呈现的东西
public class Main {public static void main(String[] args) throws ParseException {Calendar c = Calendar.getInstance();Date date = new Date();System.out.printf("%tB %te %tY%n", date, date, date);System.out.printf("%tl %tM %tp%n", c, c, c);}
}