JAVA时间戳-Calendar类使用(包括set,get,add方法)

  目录

  Calendar 类是一个抽象类,它为特定时间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。

  瞬间可用毫秒值来表示,它是距历元(即格林威治标准时间 1970 年 1 月 1 日的 00:00:00.000,格里高利历)的偏移量。

  一、Calendar类

  想要取得时间,首先使用Calendar的getInstance()取得一个Calendar的实例,例如:

  Calendar c = Calendar.getInstance();

  创建 Calendar 对象不能使用 new 关键字,因为 Calendar 类是一个抽象类,但是它提供了一个 getInstance() 方法来获得 Calendar类的对象。

  getInstance() 方法返回一个 Calendar 对象,其日历字段已 由当前日期和时间初始化。

  Calendar 类中定义了许多常量,分别表示不同的意义。

  二、Calendar类的常用方法

  2.1 get()方法

  获取值

  cal.get(Calendar.YEAR);//年

  cal.get(Calendar.MONTH) + 1;//月(Calendar在月份上的常数值从0开始的)

  cal.get(Calendar.DATE);//日

  cal.get(Calendar.HOUR_OF_DAY);//时

  cal.get(Calendar.MINUTE);//分

  cal.get(Calendar.SECOND);//秒

  cal.get(Calendar.DAY_OF_WEEK);//星期(Locale.ENGLISH情况下,周日是1)

  cal.get(Calendar.DAY_OF_WEEK);//获取当前是一周中的第几天(从0开始计算)

  cal.get(Calendar.DAY_OF_MONTH);//获取当前是一月的第几天

  cal.get(Calendar.DAY_OF_YEAR);//获取当前时一年中的第几天

  示例代码如下:

  public class CalandarTest {

  public static void main(String[] args) {

  Calendar cal=Calendar.getInstance();

  //获取当前年

  int year= cal.get(Calendar.YEAR);

  System.out.println(year);

  //获取当前月(从0开始计算)

  int month= cal.get(Calendar.MONTH);

  System.out.println(month);

  //获取当前日

  int date= cal.get(Calendar.DATE);

  System.out.println(date);

  //获取当时小时

  int hour= cal.get(Calendar.HOUR);

  System.out.println(hour);

  //获取当前分钟数

  int minute= cal.get(Calendar.MINUTE);

  System.out.println(minute);

  //获取当前秒数

  int second= cal.get(Calendar.SECOND);

  System.out.println(second);

  //获取当前是一周中的第几天(从0开始计算)

  int wday= cal.get(Calendar.DAY_OF_WEEK);

  System.out.println(wday);

  //获取当前是一月的第几天

  int mday= cal.get(Calendar.DAY_OF_MONTH);

  System.out.println(mday);

  //获取当前时一年中的第几天

  int yday= cal.get(Calendar.DAY_OF_YEAR);

  System.out.println(yday);

  }

  }

  2.2 set()方法

  设置值(返回为日期对象)

  cal.set(2023, 7, 15, 9, 44, 51);//年月日时分秒(月份0代表1月)

  cal.set(Calendar.YEAR, 2023);//年

  cal.set(Calendar.MONTH, 7);//月(月份0代表1月)

  cal.set(Calendar.DATE, 11);//日

  cal.set(Calendar.HOUR_OF_DAY, 15);//时

  cal.set(Calendar.MINUTE, 33);//分

  cal.set(Calendar.SECOND, 32);//秒

  示例代码如下:

  public class CalandarTest {

  public static void main(String[] args) {

  Calendar cal=Calendar.getInstance();

  //设置当前年

  cal.set(Calendar.YEAR,2022);

  System.out.printf("%tY%n",cal);

  //设置当前月(从0开始计算)

  cal.set(Calendar.MONTH,5);

  System.out.printf("%tm%n",cal);

  //设置当前日

  cal.set(Calendar.DATE,5);

  System.out.printf("%td%n",cal);

  //设置当时小时

  cal.set(Calendar.HOUR,14);

  System.out.printf("%tl%n",cal);

  //设置当前分钟数

  cal.set(Calendar.MINUTE,50);

  System.out.printf("%tM%n",cal);

  //设置当前秒数

  cal.set(Calendar.SECOND,12);

  System.out.printf("%tS%n",cal);

  }

  }

  输出结果如下:

  2.3 add()方法

  运算值(在获取的当前时间进行运算,返回值为日期对象)

  cal.add(Calendar.YEAR, 1);//年

  cal.add(Calendar.MONTH, 1);//月

  cal.add(Calendar.DATE, 1);//日

  cal.add(Calendar.HOUR_OF_DAY, -1);//时

  cal.add(Calendar.MINUTE, 1);//分

  cal.add(Calendar.SECOND, 1);//秒

  cal.add(Calendar.DATE, 7);//周

  示例代码如下:

  public class CalandarTest {

  public static void main(String[] args) {

  Calendar cal=Calendar.getInstance();

  //以当前年计算

  cal.add(Calendar.YEAR,2022);

  System.out.printf("%tY%n",cal);

  //以当前月(月份不从0开始计算)计算

  cal.add(Calendar.MONTH,5);

  System.out.printf("%tm%n",cal);

  //以当前日计算

  cal.add(Calendar.DATE,-5);

  System.out.printf("%td%n",cal);

  //以当时小时小时

  cal.add(Calendar.HOUR_OF_DAY,14);

  System.out.printf("%tl%n",cal);

  //以当前分钟数计算

  cal.add(Calendar.MINUTE,-50);

  System.out.printf("%tM%n",cal);

  //以当前秒数计算

  cal.add(Calendar.SECOND,12);

  System.out.printf("%tS%n",cal);

  }

  }

  输出结果如下:

  三、格式化日期输出

  Calendar类返回的时间类型为对象类型,为了方便输出展示,在输出时可以将日期格式化。

  转换符说明%tH小时(00-23)%tL小时(01-12)%tk小时(0-23)%tM分钟(00-29)%tS秒(00-59)%tL毫秒(000-999)%tN微秒(000000000-999999999)%tp当前语言环境下的上午/下午%ts从1970-01-01 00:00:00到现在的秒%tQ从1970-01-01 00:00:00到现在的毫秒%tF年-月-日%tT时-分-秒%tD月/日/年%tc全部时间日期%tR时分%tr时分秒PM

  总结

  以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

  您可能感兴趣的文章: