Java常用类(6)

Java常用类(6)----获取时间类

java.text.SimpleDateFormat类

  1. Date类的API不易于国际化,java.text.SimpleDateFormat类是一个不与语言环境有关的方式来格式化和解析日期的具体类
  2. 它允许进行 格式化:日期->文本、 解析:文本->日期
  3. 格式化(日期转化为字符串):
    • SimpleDateFormat():默认的模式和语言环境创建对象
    • public SimpleDateFormat(String pattern):该构造方法可以用参数pattern指定的格式创建一个对象,该对象调用
    • public String format(Date date):方法格式化时间对象date
  4. 解析(格式化的逆过程):
    • public Date parse(String source):从给定字符串的开始解析文本,以生成一个日期
  5. 代码测试
public class DateTimeTest2 {
    /*
    * jdk8之前的日期时间的API测试
    * 1.System类中currentTimeMillis();
    * 2.java.util.Date和子类java.sql.Date
    * 3.SimpleDateFormat
    * 4.Calendar
    *
    *
    *
    * */
    @Test
    public void testSimpleDateFormat(){
        //实例化:使用默认构造器
        SimpleDateFormat sdf = new SimpleDateFormat();
        //格式化
        Date date = new Date();
        System.out.println(date);//Thu Jan 27 21:32:44 CST 2022
        String format = sdf.format(date);
        System.out.println(format);//22-1-27 下午9:32
        //解析
        String str1="22-1-26 下午9:37";//默认格式
        Date date1 = sdf.parse(str1);
        System.out.println(date1);
        //按照指定方式格式化
        SimpleDateFormat sdf1=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");//使用想要的格式

        String date2 = sdf1.format(date);
        System.out.println(date2);//2022-01-27 09:45:45
        



    }


}

解析:要求字符串必须是符合SimpleDateFormat识别的格式(通过构造器参数体现),否则,抛异常

  1. 字符串“2020-09-08”转换为java.sql.Date
 public void testExer() throws ParseException {
        String birth="2020-09-08";
        SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
        Date date = sdf1.parse(birth);
        System.out.println(date);
        java.sql.Date birthDate=new java.sql.Date(date.getTime());
        System.out.println(birthDate);
        

    }

java.util.Calendar类

  1. Calendar是一个抽象基类,主要用于完成日期字段之间相互操作的功能
  2. 获取Calendar实例的方法
    • 使用Calendar.getInstance()方法
    • 调用它的子类GregorianCalendar的构造器
  3. 一个Calendar的实例是系统时间的抽象表示,通过get(int field)方法来取得想要的时间信息。
  4. 注意:
    • 获取月份时:一月是0,二月是1,以此类推,12月是11
    • 获取星期时:周日是1,周二是2,。。。周六是7
  5. 常用方法:
    • get()
    • set()
    • getTime()
    • setTime()
  6. 代码测试
public class DateTimeCalendar {
    @Test
    public void CalendarTest(){
        //1.实例化
        Calendar calendar = Calendar.getInstance();//调用其静态方法
        //2.常用方法
        //get():获取一些属性
        int days = calendar.get(Calendar.DAY_OF_MONTH);//这一个月的第几天
        System.out.println(days);
        System.out.println(calendar.get(Calendar.DAY_OF_YEAR));
        System.out.println(calendar.get(Calendar.DAY_OF_WEEK));//5,周四,但是从周日开始算,所以是第五天
        //set():设置属性,修改属性
        calendar.set(Calendar.DAY_OF_MONTH,22);
        int day = calendar.get(Calendar.DAY_OF_MONTH);
        System.out.println(day);//22
        //add():增加
        calendar.add(Calendar.DAY_OF_MONTH,3);
        int day2 = calendar.get(Calendar.DAY_OF_MONTH);
        System.out.println(day2);//25:加三天
        //getTime():日历类--->Date
        Date date = calendar.getTime();
        System.out.println(date);//Tue Jan 25 22:14:20 CST 2022
        //setTime():Date--->日历类
        Date date1 = new Date();
        calendar.setTime(date1);
        int day3 = calendar.get(Calendar.DAY_OF_MONTH);
        System.out.println(day3);//27


    }
}
  1. 说明:

​ jdk8之前的日期时间的API测试

  • 1.System类中currentTimeMillis();
  • 2.java.util.Date和子类java.sql.Date
  • 3.SimpleDateFormat
  • 4.Calendar

Jdk8:java.time

  1. Java8吸收了Joda-Time的精华,以一个新的开始为Java创建优秀的API。新的java.time中包含了所有关于本地日期(LocalDate)、本地时间(LocalTime)、本地日期时间(LocalDateTime)、时区(ZoneDateTime)和持续时间(Duration)的类
  2. 三个类的使用
    • LocalDate
    • LocalTime
    • LocalDateTime(相较于其他两个,使用频率要高)
  3. 实例化:

now()

of()

//实例化 now():获取当前的日期、时间、日期加时间
        LocalDate localDate = LocalDate.now();
        LocalTime localTime = LocalTime.now();
        LocalDateTime now = LocalDateTime.now();
        System.out.println(localDate);
        System.out.println(localTime);
        System.out.println(now);
        //of():设置指定的年月时分秒,没有偏移量
        LocalDateTime localDateTime = LocalDateTime.of(2022, 1, 27, 22, 44, 45);
        System.out.println(localDateTime);//2022-01-27T22:44:45
  1. 方法的使用

    1)getXXX():获取一些属性

    //getXXX()
            System.out.println(localDateTime.getDayOfMonth());
            System.out.println(localDateTime.getDayOfWeek());
            System.out.println(localDateTime.getDayOfYear());
            System.out.println(localDateTime.getMonthValue());
    

  1. withXXX():设置一些属性

    //体现不可变性
            LocalDate localDate1 = localDate.withDayOfMonth(22);
            System.out.println(localDate);//不变,本地时间不会改变,比calendar靠谱
            System.out.println(localDate1);//2022-01-22,修改后的
    

    3)plusxxx(),minusxxx():增加减少

    /plusxxx(),minusxxx():增加减少
            LocalDateTime localDateTime1 = localDateTime.plusDays(3);
            System.out.println(localDateTime);//不可变性
            System.out.println(localDateTime1);//2022-01-30T22:44:45,增加三天
            LocalDateTime localDateTime2 = localDateTime.minusDays(7);
            System.out.println(localDateTime2);
    

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zero摄氏度

感谢鼓励!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值