常用类-jdk8之前的日期和API

鼠扑  金牌会员 | 2022-8-25 14:10:30 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 927|帖子 927|积分 2781

一、System静态方法
点击查看代码
  1. package com.Tang.StringDay01;
  2. import org.junit.Test;
  3. public class DateTimeTest {
  4.     /*
  5.     System类中的currentTimeMillis()方法
  6.      */
  7.     @Test
  8.     public void test3(){
  9.         long time = System.currentTimeMillis();
  10.         //返回当前时间与1970年1月1日0时0分0秒之间以毫秒为单位的时间差
  11.         //称为时间戳
  12.         System.out.println(time);
  13.     }
  14. }
复制代码
代码运行结果图
二、Date类
点击查看代码
  1. /*
  2.     java.tuil.Date类
  3.     1.两个构造器的使用
  4.             Date():创建了一个对应当前时间的Date对象
  5.             创建指定毫秒数的Date对象
  6.     2.两个方法的使用
  7.            toString():显示当前的年、月、日、时、分、秒
  8.            getTime():获取当前date对象对应的毫秒数,(时间戳)
  9.      3.java.sql.Date对应着数据库中的日期类型的变量
  10.      */
  11.     @Test
  12.     public void test(){
  13.         //构造器一:Date():创建了一个对应当前时间的Date对象
  14.         Date date1 = new Date();
  15.         System.out.println(date1.toString());
  16.         System.out.println(date1.getTime());//1655192749803
  17.         System.out.println("=====================");
  18.         //构造器二:创建指定毫秒数的Date对象
  19.         Date date = new Date(1655192749803L);
  20.         System.out.println(date);
  21.         System.out.println("=====================");
  22.         //创建Java.sql.Date对象
  23.         java.sql.Date date2 = new java.sql.Date(1655192749803L);
  24.         System.out.println(date2);
  25.         System.out.println("=====================");
  26.         //如何将Java.util.Date对象转换为Java.sql.Date对象
  27.         //情况一:多态
  28.         Date date3 = new java.sql.Date(1655192749803L);
  29.         java.sql.Date date4 = (java.sql.Date)date3;
  30.         //情况二:
  31.         Date date5 = new Date();
  32.         java.sql.Date date6 = new java.sql.Date(date5.getTime());
  33.     }
复制代码
运行结果图

三、Calendar类
1.实例化
方式一:创建其子类(GregorianCalendar)的对象
方式二:调用其静态方法getInstance()
点击查看代码
  1. @Test
  2.     public void test(){
  3.         Calendar calendar = Calendar.getInstance();
  4.         System.out.println(calendar.getClass());//查看对象是由哪个类造的
  5.         //常用方法
  6.         //get()
  7.         int days = calendar.get(Calendar.DAY_OF_MONTH);//获取今天是这个月的第几天
  8.         System.out.println(days);
  9.         int days1 = calendar.get(Calendar.DAY_OF_YEAR);//获取今天是这一年的第几天
  10.         System.out.println(days1);
  11.         //set()
  12.         System.out.println("=============");
  13.         calendar.set(Calendar.DAY_OF_MONTH,22);
  14.         days = calendar.get(Calendar.DAY_OF_MONTH);//获取设置的日期是这个月的第几天
  15.         System.out.println(days);
  16.         //add()
  17.         System.out.println("=============");
  18.         calendar.add(Calendar.DAY_OF_MONTH,3);//想要再此日期上减去3天只需要写成-3即可
  19.         days = calendar.get(Calendar.DAY_OF_MONTH);//获取当前日期是这个月的第几天,然后在此基础上加上3天
  20.         System.out.println(days);
  21.         //getTime():日历类---->Date
  22.         System.out.println("=============");
  23.         Date date = calendar.getTime();
  24.         System.out.println(date);
  25.         //setTime():Date--->日期类
  26.         System.out.println("=============");
  27.         Date date1 = new Date();//获取当前Date
  28.         calendar.setTime(date1);//将Date转化为日期类
  29.         days = calendar.get(Calendar.DAY_OF_YEAR);//获取该日期是这一年的第几天
  30.         System.out.println(days);
  31.     }
复制代码
运行结果图
注意事项:
获取月份时:一月是0,二月是1,依次类推12月是11
获取星期时:周日是1,周一是2,依次类推周六是7
四、SimpleDateFormat类
点击查看代码
  1.     /*
  2.         SimpleDateFormat对日期Date类的格式化和解析
  3.         1.两个操作
  4.         1.1格式化:日期--->字符串
  5.         1.2解析:格式化的逆过程,字符串--->日期
  6.          */
  7.     @Test
  8.     public void test4() throws ParseException {
  9.         //实例化SimpleDateFormat:使用默认的构造器
  10.         SimpleDateFormat sdf = new SimpleDateFormat();
  11.         //格式化:日期--->字符串
  12.         Date date = new Date();
  13.         System.out.println(date);
  14.         String format = sdf.format(date);
  15.         System.out.println(format);
  16.         //解析:格式化的逆过程,字符串--->日期
  17.         String str = "2022/6/15 下午4:10";//默认格式
  18.         Date date1 = sdf.parse(str);
  19.         System.out.println(date1);
  20.         System.out.println("=================");
  21.         //格式化与解析方式二:按照指定的方式进行格式化和解析:调用代参的构造器
  22.         SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
  23.         String format1 = sdf1.format(date);
  24.         System.out.println(format1);
  25.         //解析
  26.         Date parse = sdf1.parse("2022-06-15 04:20:53");//必须按照给定的格式,否则会抛异常
  27.         System.out.println(parse);
  28.     }
复制代码
运行结果图
1.练习题:字符串"2022-6-15",转换为Java.sql.Date
点击查看代码
  1.     @Test
  2.     public void test5() throws ParseException {
  3.         String birth = "2022-6-15";
  4.         SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
  5.         Date parse = sdf1.parse(birth);
  6.         java.sql.Date date = new java.sql.Date(parse.getTime());
  7.         System.out.println(date);
  8.     }
复制代码
运行结果图
2.练习题:三天打鱼两天晒网,输入两个日期,从第一个日期开始,到第二个日期是请问这天实在打鱼还是在晒网
若在测试单元@Test中无法使用Scanner输入可以参考以下解决方法;
(1)打开idea------找到help-------点击Edit Custom VM Options
(2)在最后添加:-Deditable.java.test.console=true
(3)保存,重新打开idea。
点击查看代码
  1. @Test
  2.     public void test6() throws ParseException {
  3.         //总天数的计算
  4.         //这里在Test测试单元里无法使用Scanner,也就是无法输入日期可参考上图解决方法
  5.         Scanner input = new Scanner(System.in);
  6.        String s = input.nextLine();
  7.         String s1 = input.nextLine();
  8.      
  9.         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  10.         SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
  11.         Date date1 = sdf.parse(s);
  12.         Date date2 = sdf1.parse(s1);
  13.         int totalDay = (int) ((date2.getTime() -date1.getTime()) /(1000 * 60 * 60 *24) + 1);
  14.         System.out.println("从1999-04-06到2022-06-15一共有"+ totalDay+"天");
  15.         if(totalDay % 5 == 1 || totalDay % 5 == 2 || totalDay % 5 == 3)
  16.             System.out.println("这一天在打鱼");
  17.         else
  18.             System.out.println("这一天在晒网");
  19.     }
复制代码
运行结果图

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

鼠扑

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表