zoukankan      html  css  js  c++  java
  • 日期和时间库Joda Time

    一、添加Maven依赖

    <dependency>
        <groupId>joda-time</groupId>
        <artifactId>joda-time</artifactId>
        <version>2.10.8</version>
    </dependency>

    二、常用API说明

    import org.joda.time.DateTime;
    import org.joda.time.Instant;
    
    /**
     * 在JDK1.8之前,处理日期和时间的方式比较单一,Java中提供了Calendar来处理日期,但是过程较为繁琐,但是在JDK1.8之后,
     * Java更新了time包提供了LocalDate,LocalTime,LocalDateTime等日期时间类来处理较为复杂的关于日期和时间的业务逻辑的方法。
     * 现在介绍Joda-Time日期时间工具类,该类库的开发者参与了JDK1.8中time包的开发,所以在那些使用JDK1.8之前的项目,Joda-Time是一个不错的选择。
     * 而在JDK1.8之后,该工具类也是值得推荐使用的,其原因在于高效和安全。
     *
     * 注意:这里用的是joda的包
     *
     *  5个最常用的date-time类:
     *  Instant - 不可变的类,用来表示时间轴上一个瞬时的点
     *  DateTime - 不可变的类,用来替换JDK的Calendar类
     *  LocalDate - 不可变的类,表示一个本地的日期,而不包含时间部分(没有时区信息)
     *  LocalTime - 不可变的类,表示一个本地的时间,而不包含日期部分(没有时区信息)
     *  LocalDateTime - 不可变的类,表示一个本地的日期-时间(没有时区信息)
     *  说明:不可变的类,表明了正如Java的String类型一样,其对象是不可变的。即,不论对它进行怎样的改变操作,返回的对象都是新对象。
     *
     */
    public final class JodaTimeHelper {
    
        public static void main(String[] args) {
            JodaTimeHelper.apiInstant();
        }
    
        /**
         * Instant比较适合用来表示一个事件发生的时间戳。不用去关心它使用的日历系统或者是所在的时区。
         * 该类中使用1970-01-01 00:00:00开始到未来某一刻的的毫秒总数。
         */
        public static void apiInstant(){
            // 初始化,获得设置为当前系统毫秒时间的Instant对象
            Instant instant = Instant.now();
            //获取瞬间的毫秒数
            System.out.println("毫秒数:" + instant.getMillis());
            //当前时间戳减去duration毫秒数
            instant.minus(10);
            //当前时间戳加上duration毫秒数
            instant.plus(10);
            //重新设置Instant的毫秒数
            Instant.ofEpochMilli(10000);
            // 输入时间日期字符串,获取对应毫秒数
            System.out.println("输入时间日期字符串,获取对应毫秒数:" +  Instant.parse("2020-10-06 12:12:12").getMillis());
            DateTime dateTime = instant.toDateTime();
            System.out.println(dateTime.toString("yyyy/MM/dd"));
        }
    
        /**
         * DateTime:用来处理日期时间的类
         */
        public static void apiDateTime(){
            //当前时间
            DateTime currentDateTime =new DateTime();
            DateTime dateTime =new DateTime(2019,3,11,12,23,11); //设置年月日 时分秒
    
            // 获取DateTime 中当前日期的位置
            // 通用格式  AA of BB, 如hourofDay() 获取当前时间在当前日的第几个小时
            // 该类方法返回的是 Property对象 调用该对象的get()获取对应的值(还有两个方法getMaximumValue()和getMinimumValue()获取对应最大值和最小值)
            int day = dateTime.hourOfDay().get();
            System.out.println(day);
    
            // 减去/加上DateTime中当前时间
            // 通用格式   minus AA  或者 plus AA, 如minusDays(int days)  //当前时间减去days天数 或者 plusDays(int days)  //当前时间加上days天数
            // 这类方法返回的是DateTime 对象 ,调用toString(日期格式)输出对应格式的日期时间
            DateTime minusDayTime = dateTime.minusDays(1);
            System.out.println(minusDayTime.toString("yyyy-MM-dd HH:mm:ss"));
    
            // 设置DateTime中时间
            // 通用格式 with AA() 用来设置DateTime实例的某个时间。因为DateTime是不可变对象,所以没有提供setter方法可供使用,with方法也没有改变原有的对象,而是返回了设置后的一个副本DateTime对象
            // withYear(int year) 设置当前时间的年份
            dateTime.withYear(2015).withMonthOfYear(5).withDayOfYear(20);
        }
    }
    时刻与技术进步,每天一点滴,日久一大步!!! 本博客只为记录,用于学习,如有冒犯,请私信于我。
  • 相关阅读:
    WebClien简单示例(一)
    关于WQS二分算法以及其一个细节证明
    Scut游戏服务器免费开源框架快速开发(1)
    Scut游戏服务器免费开源框架快速开发(3)
    Scut游戏服务器免费开源框架快速开发(2)
    Struts中的 saveToken的方法
    CKEditor 3.6
    Oracle 笔记 day01
    Oracle日期格式问题
    Oracle 笔记 day03
  • 原文地址:https://www.cnblogs.com/myitnews/p/13908681.html
Copyright © 2011-2022 走看看