栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java入门 第十二节(三) 补充: 时间类 + 正则表达式(了解即可)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java入门 第十二节(三) 补充: 时间类 + 正则表达式(了解即可)

1. 简单介绍 Date类 1.1 概述
  • 时间戳,获取日期和时间。 表示日期和时间的类,在java.util.Date 下。
  • 表示当前距 1970年1月1日00:00:00时间的毫秒数,精确到毫秒(1000毫秒 = 1秒)。
1.2 常见方法
  • 需要将Date与long类型毫秒值之间的转换。
1.Date --> long类型毫秒值   public long getTime(); 
2.long类型--> Date   通过构造方法 new Date(long l);  
2.1    setTime(long l);
1.3 如何使用
  • Date类有设计上得缺陷,但是也是值得我们去了解一下。
  • 需要记住: long 转换 Date 和 Date 转换 long。
public class DateClass {
    public static void main(String[] args) {
        //1.创建对象,通过构造方法;
        Date date = new Date();
        //思考一下: 打印的是地址值么!? 如果不是那是不是就被重写了!重写了toString()
        System.out.println(date);// 获取本地时间。


        //1.1 通过一个long 类型的毫秒时间 System.currentTimeMillis() ;
        long l = System.currentTimeMillis();
        System.out.println(l);//1653312000408 毫秒,一个时间戳


        //1.2 long(毫秒值)-->Date   new Date(long l);
        Date date2 = new Date(1653312000408l); //1653312000408l 以前的时间。
        System.out.println(date2); //之前的时间。

        //1.3  long(毫秒值)-->Date   setTime()
        date2.setTime(1653312000408l);
        System.out.println(date2);


        //2.  Date-->long(毫秒值)   ,相当于返回一个long类型毫秒的时间戳!
        long time = date.getTime();
        System.out.println(time); 
    }
}

1.4 时间工具类 DateFormat类
  • 为了能让使用者读懂Date日期输出,变得有意义, 就会使用日期格式化工具类。
1.4.1 创建对象
  • DateFormat 类是抽象类,无法创建对象就需要使用其实现类 SimpleDateFormat。
 new SimpleDateFormat(模式);
 日期和时间模式:
		 格式:yyyy-MM-dd HH:mm:ss
		  MM/dd/yyyy..

1.4.2 常见方法
  • 需要掌握的方法功能,从字符串(文本)–>Date,从Date–>字符串(文本)之间的转换。
1.format(Date):把 Date格式化字符串。 
2.parse(String): 把字符串转换为Date。 

注:这两个方法都是它的父类: DateFormat类
public class DateFormatDemo {
    public static void main(String[] args) throws ParseException {
        //1,创建日期
        Date date = new Date();
        //2.格式化日期类,参考API 例子即可!
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        //3.格式化输出
        String resault = sdf.format(date); //调用的是父类的方法;
        System.out.println(resault);


        System.out.println("----------分割线---------------");

        
        String dateStr = "2022年05月20日 13:14:00"; //自定义时间类型
        SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
        //一定要注意: 时间类型 要与  解析的格式保持一致,String pattern 。错误: yyyy-MM月dd日 HH:mm:ss
        Date parse = sdf2.parse(dateStr); //需要抛异常!
        System.out.println(parse);
    }
}

输出结果:

2022-03-24 17:16:17
----------分割线---------------
Fri May 20 13:14:00 CST 2022
1.4.3 练习:计算在地球生活的天数!
  • 用户接受出生年月日,计算自己存活天数。注意:格式匹配,抛出异常!
public class DateTest01 {
    public static void main(String[] args) throws ParseException {
        //1.控制台接受输入结果:到现在的天数
        System.out.println("请按照格式输入你的信息如:xxxx-xx-xx");
        String input = new Scanner(System.in).next();

        //2.相当于拿到string类型转换为Date类型在输出
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");// 注意:格式匹配!!
        Date resault = sdf.parse(input); // 需要注意抛出异常!
        System.out.println(resault);// 输出查看结果,

        // 3.需要将Date类型转换为long类型
        long beginTime = resault.getTime();

        //4.获取当前时间节点
        long time = System.currentTimeMillis();

        //5 做减法。并计算天数
       long days =  (time-beginTime)/1000/60/60/24; // 将毫秒换算成天数!
        System.out.println("存活天数 :"+days);

    }
}
2. 简单介绍 Calendar类
  • public abstract class Calendar日历类,抽象的,不能直接创建对象。可以单独获取日历上得某段属性。
2.1 创建对象
  • 抽象类,无法用new 来创建对象,怎么办!? 看Api
1. 调用静态方法 Calendar i= Calendar.getInstance(); //底层也是调用子类。 多态的形式。
2.2 常用属性
  • 通过字段属性,可以获取 日历的详情,如:年,月,日,等。
属性名称
YEAR年
MONTH月
DATE日
HOUR小时
MINUTE分
SECOND秒
DAY_OF_YEAR一年第几天
WEEK_OF_YEAR一年第几周
HOUR_OF_DAY24小时制
DAY_OF_WEEK_IN_MONTH当月中的第几周
2.3 常用方法
  1. public int get(int field) field 是常用属性字段。
  2. public final void set(int year, int month, int date, int hourOfDay,int minute)可以设置指定时间。
    还有其它重载方法public void set(int field, int value)。给字段设置指定值。
  3. public abstract void add(int field, int amount) 根据日历的规则,将指定的时间量添加或减去给定的日历字段
public class CalenderDemo {
    public static void main(String[] args) {
        Calendar c = Calendar.getInstance();
        System.out.println(c);//输出日历类的对象信息。 该信息包含了很多字段属性。

        //1.查看当前时间
        System.out.println(c.getTime());//同 Date类
        //2.通过get(int field)方法获取 例如:年月日
        //2.1 注意:月份是从0开始的11结束,所以计数需要加1 (c.get(Calendar.MONTH)+1)
        //System.out.println(c.get(Calendar.YEAR)+"年" + (c.get(Calendar.MONTH)+1)+"月"+ c.get(Calendar.DATE)+"日");
        //3.通过get(int field)方法获取 例如:时分秒
         System.out.println(c.get(Calendar.HOUR)+":"+c.get(Calendar.MINUTE)+":"+c.get(Calendar.SECOND));

        //4.直接调用方法输出即可!
        CalendarToString(c);// 输出时间
        //5.可以设置指定的时间。 1949年10月1日
        c.set(1949,9,1,10,10,10);
        CalendarToString(c);//输出set()后的时间! //1949年10月1日


        //6.add()方法 获取5天之后 正数当前天往后,负数就是往前
        c.add(Calendar.DAY_OF_MONTH,-5);
        CalendarToString(c); //1949年9月26日


    }
    
    public static void CalendarToString(Calendar c){
        System.out.println(c.get(Calendar.YEAR)+"年" + (c.get(Calendar.MONTH)+1)+"月"+ c.get(Calendar.DATE)+"日");
    }
}

输出结果:

java.util.GregorianCalendar[time=1653401631717,.... 省略
Tue May 24 22:13:51 CST 2022
10:13:51
2022年5月24日
1949年10月1日
1949年9月26日
2.4 练习: 获取任意一年的2月有多少天!?
  • 啥是闰年!?满足啥条件才可以!?
public class CalendarTest {
    public static void main(String[] args) {
        
        System.out.println("请输入任意年份: ");
        int year = new Scanner(System.in).nextInt();
        //1.创建日历类型
        Calendar c = Calendar.getInstance();
        c.set(year,2,1); // 月份+1 下面
        //你就将所有的3月1日时间往后减一天即可!
        c.add(Calendar.DAY_OF_MONTH,-1);
        CalendarToString(c);

    }
    
    public static void CalendarToString(Calendar c){
        System.out.println(c.get(Calendar.YEAR)+"年" + (c.get(Calendar.MONTH)+1)+"月"+ c.get(Calendar.DATE)+"日");
    }
}

输出结果:

请输入任意年份: 
2004
2004年2月29日
3. 扩展知识:正则表达式 RegEX
  • 相当于一种“规则”,来描述或者匹配符合规则的一些字符串。相当于一种匹配字符串的方法,用来检查用户输入的内容是否符合要求(严格区分大小写的)。
3.1 常见字符
  • 老吴认为: 这玩意不硬记!需要的时候去百度搜即可! 只需要理解意思就行。


3.1 String类提供的正则表达式的方法
  • 是String类中的方法。
public boolean matches(String regex)  告知此字符串是否匹配给定的正则表达式。 
3.2 练习匹配手机号
  • 入门案例。
public class RegexDemo {
    public static void main(String[] args) {
        //1.控制台接受手机号
        System.out.println("请输入手机号: ");
        String iphone = new Scanner(System.in).next();


        
        String regex ="1[0-9]{10}";
        //3.然后需要判断
        if (iphone.matches(regex)){
            System.out.println(" 手机号正确,准备接受验证码...");
        }else{
            System.out.println("格式不对!");
        }
    }
}
  • 如果是匹配身份证号呢!? 怎么办!?
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/930178.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号