• day15--Java常用类之日期相关类


    Java常用类

    3.日期相关类

    3.1Date类

    在标准Java类库中包含一个Date类,它的对象表示一个特定的瞬间,精确到毫秒。在网上商城下单时,在对报销单进行审核时,都需要获取当前的时间,通过Date类就可以完成。

    例子:Date类的使用

    package li.normalclass.date;
    import java.util.Date;
    public class TestDate {
    public static void main(String[] args) {
    //获取当前的时间 格式为 yyyyMMddhhmmss
    Date date = new Date();//相当于new Date(System.currentTimeMillis())
    //操作当前的时间
    System.out.println(date.toString());//Sat Aug 06 19:15:28 CST 2022
    System.out.println(date.toLocaleString());//2022-8-6 19:16:06
    System.out.println(System.currentTimeMillis());//计算从1970年1月1日 0:00:00到目前为止的毫秒数
    System.out.println(date.getYear());//122 =2022-1900
    System.out.println(date.getMonth());//7 0-11 现在是八月
    System.out.println(date.getDate());//6 日
    System.out.println(date.getDay());//6 当前为星期六 注:星期日为0
    System.out.println(date.getHours());//19 当前为19点
    System.out.println(date.getMinutes());//26 当前为26分
    System.out.println(date.getSeconds());//16 当前为16秒
    System.out.println(date.getTime());//1659785176358 计算从1970年1月1日 0:00:00到目前为止的毫秒数
    //获取当前的时间 格式为 yyyyMMdd
    java.sql.Date sdate = new java.sql.Date(System.currentTimeMillis());
    System.out.println(sdate.toString());//2022-08-06
    java.sql.Date sdate2 = java.sql.Date.valueOf("1896-9-10");
    System.out.println(sdate2.toString());//1896-09-10
    }
    }

    查看API文档大家可以看到其实Date类中的很多方法已经过时了。JDK1.1之前的Date包含了日期操作、字符串转化为对象等操作。经过JDK1.1之后,日期操作类一般使用Calendar类,而字符串的转化 使用DateFormat类。

    3.2DateFormat类

    Format:格式

    DateFormat是一个抽象类,一般使用它的子类SimpleDateFormat类来实现。主要作用就是把时间对象转化为指定格式的字符串。反之,就是把指定格式的字符串转化为时间对象。

    字符串----->日期

    日期----->字符串

    例子:

    package li.normalclass.date;
    import java.text.*;
    import java.util.Date;
    /**
    * 主要操作:
    * DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//指定识别的格式
    *
    * Date date = sdf.parse(strdate);//将字符串转换成日期
    *
    * String strdate2 = sdf.format(date);//将日期转换成字符串
    */
    public class TestDateFormat {
    public static void main(String[] args) throws ParseException {
    String strdate = "1999-12-23 12:12:12";//字符串
    //String---->Date
    //DateFormat是抽象类,要实例化只能引用它的子类SimpleDateFormat
    DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//指定识别的格式
    Date date = sdf.parse(strdate);//将字符串转换成日期
    String strdate2 = sdf.format(date);//将日期转换成字符串
    System.out.println(strdate2);
    }
    }

    image-20220806202003878

    3.3Calendar类

    Calendar:日历

    例子:

    package li.normalclass.date;
    import java.util.Calendar;
    import java.util.GregorianCalendar;
    public class TestCalendar {
    public static void main(String[] args) {
    //获取当前的时间
    Calendar cal = new GregorianCalendar();
    // 输出当前的时间
    System.out.println(cal);
    //java.util.GregorianCalendar[time=1659791839017,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=31,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2022,MONTH=7,WEEK_OF_YEAR=32,WEEK_OF_MONTH=1,DAY_OF_MONTH=6,DAY_OF_YEAR=218,DAY_OF_WEEK=7,DAY_OF_WEEK_IN_MONTH=1,AM_PM=1,HOUR=9,HOUR_OF_DAY=21,MINUTE=17,SECOND=19,MILLISECOND=17,ZONE_OFFSET=28800000,DST_OFFSET=0]
    System.out.println(cal.get(Calendar.YEAR));//2022
    System.out.println(cal.get(Calendar.MONTH));//7 0~11 7代表8月
    System.out.println(cal.get(Calendar.DATE));//6 代表6号
    System.out.println(cal.get(Calendar.DAY_OF_WEEK));//7 代表周六 从周日为1开始计算一周
    //改变时间
    cal.set(Calendar.DATE,1);//直接指定日期 1号
    cal.set(Calendar.MONTH,1);//直接指定月数 2月
    cal.add(Calendar.DATE,2);//在设置的日期上再加上两天
    System.out.println(cal.get(Calendar.YEAR));//2022 -- 22年
    System.out.println(cal.get(Calendar.MONTH));//1 -- 2月
    System.out.println(cal.get(Calendar.DATE));//3 -- 3号
    System.out.println(cal.get(Calendar.DAY_OF_WEEK));//5 -- 周四
    System.out.println(cal.getActualMaximum(Calendar.DATE));//28 -- 指定月一共有多少天
    }
    }

    3.4JDK8新日期类

    针对JDK8以前的时间日期类设计的不足,比如不支持时区,线程不安全等,JDK8引入了java.time包来作为新的日期时间处理类。

    image-20220807192842310
    描述
    Instant 时间戳(瞬时时间,带时区)
    LocalDate 日期(比如:2018-09-24,不带时区)
    LocalTime 时间(比如:10:32:10,不带时区)
    LocalDateTime 日期时间(比如:2018-09-24 10:32:10,不带时区)
    Duration 两个时间的差,精确到秒或纳秒
    Peroid 两个日期的差(精确到日)
    DateTimeFormatter 日期时间格式化类(日期和字符串格式转换)
    ZoneId 时区
    ZoneOffset 时区偏移量(比如:+8:00)
    ZonedDateTime 带时区的日期时间
    ChronoUnit 日期枚举类(在时间加减操作可用到)
    MonthDay 月日
    YearMonth 年月
    Clock 代表时钟(比如:获取当前美国纽约的时间)

    例子:

    package li.normalclass.date;
    import java.time.LocalDate;
    import java.time.LocalDateTime;
    import java.time.format.DateTimeFormatter;
    public class TestNewDate {
    public static void main(String[] args) {
    //获取当前的时间
    LocalDateTime localDateTime = LocalDateTime.now();
    System.out.println(localDateTime);//2022-08-07T19:08:14.571
    System.out.println(localDateTime.getDayOfWeek());//SUNDAY
    //获取指定的时间
    LocalDateTime localDateTime1 = LocalDateTime.of(1111,11,11,11,11,11);
    System.out.println(localDateTime1);//1111-11-11T11:11:11
    System.out.println(localDateTime1.getDayOfYear());//315
    System.out.println(localDateTime1.getDayOfWeek());//SATURDAY
    //字符串转换为日期类
    String str = "1999年12月23日";
    DateTimeFormatter dtfr = DateTimeFormatter.ofPattern("yyyy年MM月dd日");
    //String--->Date Parse
    LocalDate localDate = LocalDate.parse(str,dtfr);
    System.out.println(localDate);//1999-12-23
    //Date--->String format
    String datestr = localDate.format(dtfr);
    System.out.println(datestr);//1999年12月23日
    }
    }
  • 相关阅读:
    数据资产为王,如何解析企业数字化转型与数据资产管理的关系?
    canvas画一个笑脸和画一个三角形
    [AR Foundation] AR Foundation学习之路(持续记录)
    数据结构基础学习
    冲击继电器JC-7/11/DC110V
    关于SpringBoot项目yml配置数据库、redis、mq等中间件的用户密码敏感信息加密问题的解决方案
    【Ambari】Python调用Rest API 获取集群状态信息并发送钉钉告警
    JAVASE语法零基础——Object类
    Android lint配置及使用
    Go 语言为什么不支持并发读写 map?
  • 原文地址:https://www.cnblogs.com/liyuelian/p/16557951.html