zoukankan      html  css  js  c++  java
  • Date类

    Date获取时间

    获取当前时间

            // 创建了对应当前时间的Date对象
            Date date = new Date();
            System.out.println(date.toString());  // Sat Dec 21 21:03:39 CST 2019
            System.out.println(date.getTime()); // 获取时间戳  1576933656356

    时间有当前时间有时间戳模式

    getTime()获取当前时间的时间戳
    
    
            Date date = new Date();
    
            System.out.println(date.getTime()); // 获取时间戳  1576933656356

    创建sql-Date, 就是带有详细年月日的模式

            // 创建Sql 的Date
            Date date2 = new java.sql.Date(1576933603968L);
            System.out.println(date2);

    时间戳转化为当前模式调用当前模式的构造器

            // 创建指定毫秒数的对象
            Date date1 = new Date(1576933603968L);
            System.out.println(date1.toString()); // Sat Dec 21 21:06:43 CST 2019

     util.Date 与sql.Date 的相互转化 

     

      util.Date ---> sql.Date

            // 如何将util.Date转化为 sql.Date
            // 情况一:
            Date date3 = new java.sql.Date(1576933603968L);
            Date date4 = (java.util.Date) date3;
    
            //情况二:
            Date date5 = new Date();
            java.sql.Date date6 = (java.sql.Date) date5;

    sql.Date ----> util.Date 

    需要调用sql.Date的getTime将其转化为时间戳才能转化为util.Date

            Date date1 = new Date();
            java.sql.Date sqlDate = new java.sql.Date(date1.getTime());
            System.out.println(sqlDate);  // 2020-01-06
            Date date2 = new Date(sqlDate.getTime());  // Mon Jan 06 14:55:15 CST 2020

    SimpleDateFormat

    SimpleDateFormat 两种方式
    
    格式化:  日期 ---》 String
    解析    String ---》 Date
    public class SimpleDateFormatTwo {
        public static void main(String[] args) {
            Date date = new Date();
            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            String strDate = simpleDateFormat.format(date);
            System.out.println(strDate);
    
            try {
                Date dateStr = simpleDateFormat.parse(strDate);  // 解析 : String --- 》 Date
                System.out.println(dateStr);
            } catch (Exception e) {
                e.printStackTrace();
            }
    
    
            String strDateOne = "2018-06-07 11:22:63";
            SimpleDF simpleDF = new SimpleDF();
            simpleDF.getStrDate(strDateOne);
    
    
            Date date1 = new Date();
            java.sql.Date sqlDate = new java.sql.Date(date1.getTime());
            System.out.println(sqlDate);  // 2020-01-06
            Date date2 = new Date(sqlDate.getTime());  // Mon Jan 06 14:55:15 CST 2020
            System.out.println(date2);
            Date date3 = new Date();
            Date date4 = sqlDate;
            System.out.println(date4);
    
        }
    }

    在解析的时候 使用parse必须使用try来修饰

    // 把日期   2020-01-06 10:33:02 转为sql,Date
    class SimpleDF{
        public  Date getStrDate(String str){
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            if(str != null){
                try{
                    Date date = sdf.parse(str);
                    if(date != null){
                        java.sql.Date dateOne = new java.sql.Date(date.getTime());
                        return dateOne;
                    }
                }catch (Exception e){
                    e.printStackTrace();
                }
            }
            return null;
        }
    }

    Calendar 日历类

    Calendar是一个抽象基类,主用用于完成日期字段之间相互操作的功能。

    Calendar的实现需要调用本身的getIstance()方法来实现

    Calendar c1 = Calendar.getInstance();

    Calendar的方法

            Calendar c1 = Calendar.getInstance();
    
            // set设置时间
            c1.set(2019,11,13);
            System.out.println(c1.getTime()); // 获取时间  Fri Dec 13 20:14:42 CST 2019
    
            // get 获取时间 需要由Calendar这个类本身来获取
            System.out.println(c1.get(Calendar.DAY_OF_MONTH)); // 13 获取天数为当月的第几天
            System.out.println(c1.get(Calendar.DATE)); // 13  获取天
            System.out.println(c1.get(Calendar.MONTH)); // 11 获取月
    
    
            //add()对时间增加或者减少
            c1.add(Calendar.YEAR,1);  // 把年增加1
            System.out.println(c1.get(Calendar.YEAR)); //  2020
    
            c1.add(Calendar.YEAR, -1); // 减少一年
            System.out.println(c1.get(Calendar.YEAR)); // 获取年 2019
    
    
    
            // 获取日历类时间的当前时间Date
            System.out.println(c1.getTime());  //  Fri Dec 13 20:21:21 CST 2019
    
    
            // Date ----> Calendar
            Date date = new Date(); // 当前时间
            c1.setTime(date);
            System.out.println(c1.get(Calendar.YEAR));  // 2020 时间因为上面的修改已经被修改为当前时间了

    可以看到这个时间是随着我们的修改而可以随时修改的

    注意:
     获取月份时:一月是0,二月是1,以此类推,12月是11

     获取星期时:周日是1,周二是2 , 。。。。周六是7

    以上是jdk8之前的Date  下面是jdk8之后的Date

    之前的时间api都有一些不好的特性

    可变性:可以随时修改 修改后获取的时间就随之改变了  像时间这类是不应该 被修改的
    
    偏移性:Date中的年份是从1900开始的,而月份都从0开始。
    
    格式化:格式化只对Date有用,Calendar则不行。
    
    此外,它们也不是线程安全的;不能处理闰秒等。

    java8新Date API

    LocalDate  LocalTime  LocalDateTime

    LocalDate: 本地日期  只能获取某年某月某日

    LocalTime  本地时间  只能获取某小时某分某秒 表示的是时间不是日期

    LocalDateTime  本地日期时间 

    LocalDate代表IOS格式(yyyy-MM-dd)的日期,可以存储 生日、纪念日等日期。 
    LocalTime表示一个时间,而不是日期。
    LocalDateTime是用来表示日期和时间的,这是一个最常用的类之一。

    操作方法

            // 实例化都是调用now
            LocalDate localDate = LocalDate.now();
            LocalTime localTime = LocalTime.now();
            LocalDateTime localDateTime = LocalDateTime.now();
    
    
            System.out.println(localDate);  // 2020-01-06
            System.out.println(localTime);   // 20:44:15.991
            System.out.println(localDateTime);  // 2020-01-06T20:44:15.991
    
    
            // 设置时间  此处可以看到不可变性 虽然设置了时间但是本身的还是不变
    
            System.out.println(localDate.of(2019,12,23));  // 2019-12-23
            System.out.println(localDate);  // 此时获取的时间还是当前时间  2020-01-06
    
            System.out.println(localTime.of(11, 22)); // 11:22
            System.out.println(localTime);   // 20:46:54.321
    
            System.out.println(localDateTime.of(2018, 11, 11, 13, 24));  // 2018-11-11T13:24
            System.out.println(localDateTime); // 当前时间仍是不变  2020-01-06T20:47:40.502
    
    
            //
            System.out.println(localDateTime.getDayOfMonth()); // 获取当前时间是这个月的第几天
            System.out.println(localDateTime.getDayOfWeek()); // 获取是星期几  MONDAY
            System.out.println(localDateTime.getMonth()); // 获取月份JANUARY
    
    
            //with  将时间修改为新的时间并返回新的值
            System.out.println(localDateTime.withDayOfMonth(12));  // 2020-01-12T20:58:35.993
            System.out.println(localDateTime.withMonth(6)); // 设置月份  2020-06-06T21:03:45.020
    
    
            // plus  添加
    
            System.out.println(localDateTime.plusMonths(4));  //当前时间增加4个月
            System.out.println(localDateTime.plusHours(11));  // 当前时间增加11小时
    
    
            // minus  减去
            System.out.println(localDateTime.minusHours(3));  // 当前时间减去3小时
            System.out.println(localDateTime.minusDays(2));  // 当前时间减去2天

     

      

  • 相关阅读:
    SpringCloud : yml文件配置 获取系统环境变量的值
    SpringCloud : 多个 @FeignClient 注解 value 设置为同一个应用的解决方案
    SpringCloud : Feign 不捆绑远程应用名称, 实现服务应用名称传入,调用通用自动化
    SpringCloud : Feign 使用 FastJson 解析数据
    Mybatis中在log日志或控制台打印执行的sql
    iOS 基于 itemServices 进行本地安装 ipa 应用安装包
    MySQL5.5 数据热备份
    如何在 Fiddler Script 中 自定义 修改 Request 、 Response
    Dubbo 分布式 日志 追踪
    shell脚本并发执行
  • 原文地址:https://www.cnblogs.com/zhaoyunlong/p/12081071.html
Copyright © 2011-2022 走看看