day09-JAVA常用类、String、StringBuffer、StringBuilder、时间API

1.String

String具有不可变性,因为String类中定义的是final,即使改变传递的形参,String原内容也不会改变,(额外说一句,形参传递时,基本类型传递的是内容,引用数据类型传递的是地址值)


Strin常用方法


2.StringBuffer

 StringBuffer是可变的,传递参数时,值会被改变

构造器:三种方法 

 

 


3.StringBuilder


4.JDK8之前的时间API

 1.java.lang.System类

System 类提供的 public static long currentTimeMillis() 用来返回当前时间与1970 1 1 0 0 0 秒之间以毫秒为单位的时间差。
此方法适于计算时间差
@Test
    public void Test1(){
        double num=0;
        long startTime;
        long endTime;
        startTime=System.currentTimeMillis();
        System.out.println(startTime);
        for (int i = 0; i < 10000000; i++) {
            num+=i;
        }
        endTime =System.currentTimeMillis();
        System.out.println(endTime);
        System.out.println(endTime-startTime);
        System.out.println("-----");
        System.out.println(num);

    }

2. java.util.Date类
表示特定的瞬间,精确到毫秒
构造器:
Date() 使用无参构造器创建的对象可以获取本地当前时间。
Date(long date)
常用方法
getTime(): 返回自 1970 1 1 00:00:00 GMT 以来此 Date 对象表示的毫秒数。
toString(): 把此 Date 对象转换为以下形式的 String dow mon dd hh:mm:ss zzz yyyy 其中: dow 是一周中的某一天 (Sun, Mon, Tue, Wed, Thu, Fri, Sat), zzz 是时间标准。
其它很多方法都过时了
@Test
    public void Test2(){
        Date date =new Date();
        System.out.println(date.getTime());
        System.out.println(date.toString());

        Date date1 =new Date(785785674568786678l);
        System.out.println(date1.toString());
    }

3.java.text.SimpleDateFormat类

Date 类的 API 不易于国际化,大部分被废弃了, java.text.SimpleDateFormat 类是一个不与语言环境有关的方式来格式化和解析日期的具体类。
它允许进行 格式化:日期-> 文本 解析:文本 -> 日期
格式化:
SimpleDateFormat() :默认的模式和语言环境创建对象
public SimpleDateFormat(String pattern) 该构造方法可以用 参数 pattern 指定的格式创建一个对象,该对象调用format: 设置日期格式
public String format(Date date) 将date按照给定的日期格式输出
解析:
public Date parse(String source) 从给定字符串的开始解析文本,以生成一个日期。
@Test
    public void Test3() {
//      格式化:日期-》文本
        Date date = new Date();
        SimpleDateFormat formater = new SimpleDateFormat();
        System.out.println(formater.format(date));//  2022/2/8 下午8:16

        SimpleDateFormat formater1 = new SimpleDateFormat("yyyy年MM月dd日 EEE HH:mm:ss z");
//        2022年02月08日 周二 20:25:00 CST
        System.out.println(formater1.format(date));
//---------------------------------------------------------
//        解析:文本->日期
        try {
            Date data1 = formater1.parse("2022年2月8日 星期二 08:08:08 CST");
            //解析的文本内容格式须与formater1格式一致
            System.out.println(data1.toString());// Tue Feb 08 08:08:08 CST 2022
        } catch (ParseException e) {
            e.printStackTrace();
        }
    }

 4.java.util.Calendar类

Calendar 是一个抽象基类,主用用于完成日期字段之间相互操作的功能。
获取Calendar实例 的方法
使用 Calendar.getInstance() 方法
调用它的子类 GregorianCalendar 的构造器。
一个 Calendar 的实例是系统时间的抽象表示,通过 get(int field) 方法来取得想要的时间信息。比如YEAR MONTH DAY_OF_WEEK HOUR_OF_DAY
MINUTE SECOND
 public void set(int field,int value)             设置特定日期时间
 public void add(int field,int amount)        加减特定日期时间
 public final Date getTime()        得到日期时间
 public final void setTime(Date date)        设置日期时间
注意 :
获取月份时:一月是 0 ,二月是 1 ,以此类推, 12 月是 11
获取星期时:周日是 1 ,周二是 2 , 。。。。周六是 7
@Test
    public void Test4(){
        //创建calendar实例
        Calendar calendar = Calendar.getInstance();
        //获取calendar对象的时间
        Date date =calendar.getTime();
        System.out.println(date);
        //设置calendar对象的时间
        date =new Date(84938432432l);
        calendar.setTime(date);
        System.out.println(calendar.getTime());

//        比如YEAR、MONTH、DAY_OF_WEEK(一周的第几天)、HOUR_OF_DAY(一天的第几个小时) 、MINUTE、SECOND

//        设置calendar重要时间信息
        calendar.set(Calendar.YEAR,2021);
        calendar.set(Calendar.DAY_OF_WEEK,7);
        calendar.set(Calendar.SECOND,60);
        calendar.set(Calendar.HOUR,2);
//        获取calendar重要时间信息,必须先设置,才能获取
        System.out.println(calendar.get(Calendar.YEAR));
        System.out.println(calendar.get(Calendar.DAY_OF_WEEK));
        System.out.println(calendar.get(Calendar.SECOND));
        System.out.println(calendar.get(Calendar.HOUR));

        //对calendar对象的日期时间进行加减
        calendar.add(Calendar.HOUR,2);//加两个小时
        System.out.println(calendar.get(Calendar.HOUR));
        calendar.add(calendar.HOUR,-2);//减两个小时
        System.out.println(calendar.get(Calendar.HOUR));
        System.out.println(calendar.getTime());


    }

5.JDK8中新的时间API

java.time – 包含值对象的基础包     java.time. LocalDate    java.time. LocalTime                                                    java.time. LocalDateTime     java.time. ZonedDateTime
java.time.chrono 提供对不同的日历系统的访问
java.time.format 格式化和解析时间和日期
java.time.temporal 包括底层框架和扩展特性
java.time.zone 包含时区支持的类
1.java.time – 包含值对象的基础包    java.time.LocalDate   java.time.LocalTime                                                   java.time.LocalDateTime    java.time.ZonedDateTime
@Test
    public void Test5(){
        //now()获取当前日期时间
        LocalDate localDate = LocalDate.now();
        LocalTime localTime = LocalTime.now();
        LocalDateTime localDateTime = LocalDateTime.now();

        System.out.println(localDate);
        System.out.println(localTime);
        System.out.println(localDateTime);
        System.out.println("1111----------------------");

        //of()指定日期时间
        localDateTime = LocalDateTime.of(2021,1,1,1,1,1);
        localDate =LocalDate.of(2021,2,2);
        localTime = LocalTime.of(2,2,2);
        System.out.println(localDateTime);

        
    }

 2.java.time.Instant类

@Test
    public void Test6(){
        //获取本初子午线的时间
        Instant instant =Instant.now();
        System.out.println(instant);

        //instant的时间偏移8个时区,东部时区是正的,中国北京在东8时区
        OffsetDateTime offsetDateTime = instant.atOffset(ZoneOffset.ofHours(8));
        System.out.println(offsetDateTime);

        //返回1970-01-01 00:00:00到当前时间的毫秒数,即为时间戳
        long time = instant.toEpochMilli();
        System.out.println(time);//1644329247619

        //创建Instant对象 long型数据指 在1970-01-01 00:00:00基础上加上指定毫秒数
        Instant instant1 =Instant.ofEpochMilli(1644329247619l);
        System.out.println(instant1);//2022-02-08T14:07:27.619Z

    }

3.java.time.format.DateTimeFormatter 类

三种格式化方法:

预定义的标准格式。如: ISO_LOCAL_DATE_TIME; ISO_LOCAL_DATE; ISO_LOCAL_TIME
本地化相关的格式。如: ofLocalizedDateTime(FormatStyle.LONG)
自定义的格式。如: ofPattern(“yyyy-MM-dd hh:mm:ss”)

 

@Test
    public void Test7(){
 //方式一: 预定义的标准格式。如:ISO_LOCAL_DATE_TIME; ISO_LOCAL_DATE; ISO_LOCAL_TIME
        DateTimeFormatter formatter = DateTimeFormatter.ISO_LOCAL_DATE_TIME;
        //格式化:日期-》字符串
        LocalDateTime localDateTime = LocalDateTime.now();
        String str = formatter.format(localDateTime);

        System.out.println(localDateTime);//2022-02-08T22:25:53.952664900
        System.out.println(str);//2022-02-08T22:25:53.9526649

        //解析:字符串-》日期
        TemporalAccessor parse = formatter.parse("2022-02-08T22:25:53.9526649");
        System.out.println(parse);

        System.out.println("-------------------------------------");


 //方式二:  本地化相关的格式。如:ofLocalizedDateTime(FormatStyle.LONG) 一共四种格式,full,long,medium,short
//      'Tuesday, April 12, 1952 AD' or '3:30:42pm PST'.FULL          || 'January 12, 1952'.LONG,
//      'Jan 12, 1952'.MEDIUM,          ||'12.13.52' or '3:30pm'.SHORT;
        DateTimeFormatter formatter1 = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.LONG);
        //格式化:日期-》字符串
        LocalDateTime localDateTime1 =LocalDateTime.now();
        String str1 = formatter1.format(localDateTime1);

        System.out.println(localDateTime1);
        System.out.println(str1);

        //
        System.out.println("-------------------------------------");

//重点: 方式三:自定义的格式。如:ofPattern(“yyyy-MM-dd hh:mm:ss”)
        DateTimeFormatter formatter3 = DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss");
        //格式化
        String str4 = formatter3.format(LocalDateTime.now());
        System.out.println(str4);//2020-05-10 06:26:40

        //解析
        TemporalAccessor accessor = formatter3.parse("2020-05-10 06:26:40");
        System.out.println(accessor);
    }

4.其他时间API 类

ZoneId 该类中包含了所有的时区信息,一个时区的 ID ,如 Europe/Paris
ZonedDateTime 一个在 ISO-8601 日历系统时区的日期时间,如 2007-12-03T10:15:30+01:00 Europe/Paris。
其中每个时区都对应着 ID ,地区 ID 都为“
{ 区域 }/{ 城市 } ”的格式,例如:Asia/Shanghai等
@Test
    public void Test8(){
        // ZoneId的getAvailableZoneIds():获取所有的ZoneId
        Set <String> zoneIds = ZoneId.getAvailableZoneIds();
        for (String s : zoneIds){
//            System.out.println(s);
        }

        // ZoneId的of():获取指定时区的时间
        LocalDateTime localDateTime3 = LocalDateTime.now(ZoneId.of("Asia/Tokyo"));
        System.out.println(localDateTime3);

        // ZonedDateTime的now():获取本时区的ZonedDateTime对象
        ZonedDateTime zonedDateTime = ZonedDateTime.now();
        System.out.println(zonedDateTime);

        // ZonedDateTime的now(ZoneId id):获取指定时区的ZonedDateTime对象
        ZonedDateTime zonedDateTime1 = ZonedDateTime.now(ZoneId.of("Asia/Tokyo"));
        System.out.println(zonedDateTime1);
    }
Clock 使用时区提供对当前即时、日期和时间的访问的时钟。
持续时间: Duration ,用于计算两个“时间”间隔
日期间隔: Period ,用于计算两个“日期”间隔
TemporalAdjuster : 时间校正器。有时我们可能需要获取例如:将日期调整到“下一个工作日”等操作。
TemporalAdjusters : 该类通过静态方法(firstDayOfXxx()/lastDayOfXxx()/nextXxx())提供了大量的常用TemporalAdjuster 的实现。

 

 


6、时间类总结 

 1.java.lang.System类

2. java.util.Date类

3.java.text.SimpleDateFormat类

 4.java.util.Calendar类

5.java.time – 包含值对象的基础包    java.time.LocalDate   java.time.LocalTime                                                   java.time.LocalDateTime    java.time.ZonedDateTime

 6.java.time.Instant类

7.java.time.format.DateTimeFormatter 类

8.其他时间API 类:

ZoneId
ZonedDateTime
Clock
Duration
Period
TemporalAdjuster :
TemporalAdjusters :
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值