📜  JODA-时间

📅  最后修改于: 2022-05-13 01:55:22.953000             🧑  作者: Mango

JODA-时间

Joda-Time 是一个由joda.org创建的 API,它提供了更好的类和有效的方法来处理日期和时间,而不是Java.util 包中的类,如 Calendar、Gregorian Calendar、Date 等。这个 API 包含在Java 8.0 中Java.time 包。

要包括我们需要导入以下内容:

import java.time.*;

JODA-TIME的基本特点

  • 它使用简单的字段访问器,如getYear()、getDayOfWeek()、getDayofYear()。
  • 它支持 7 种日历系统,如佛教、科普特、埃塞俄比亚、公历、公历儒略、伊斯兰教、儒略历。
  • 有一个规定可以创建我们自己的日历系统。
  • 它为日期和时间计算提供了丰富的方法集。
  • 它使用时区数据库。该数据库在一年内手动更新了几次。
  • 与Java 7.0 的早期方法相比,它的方法执行得更快;因此,提供更好的性能
  • 它的对象是不可变的。所以,它们是线程安全的

Java.time 包中的重要类。

  1. DateTime: JDK 日历的不可变替代品。
    DateTime dt = new DateTime(); 

    // 它创建一个 datetime 对象,表示由系统时钟确定的当前日期和时间(以毫秒为单位)。它是使用默认时区的 ISO 日历构建的。

  2. LocalDate :此类以年-月-日的形式表示日期,可用于表示没有时间和时区的日期。
    LocalDate today = LocalDate.now()
    //gives System date into LocalDate object using now method.
    
    System.out.println(today) 
    // 2018-08-03
    int d = today.getDayOfMonth(); 
    // 03
    
  3. LocalTime :此类表示没有时区的一天中的时间。
    LocalTime time = LocalTime.now(); //gives System time into localTime object
    System.out.println(time); // 10:19:58
    
  4. LocalDateTime :此类处理日期和时间而不考虑时区。
    // get current date and time
    LocalDateTime dt = LocalTime.now(); 
    System.out.println("%s", dt);
    

    设置环境

    1. 在eclipse中创建你的Java项目。
    2. 下载最新的 JodaTime .tar.gz 文件单击此处,并提取其内容。
    3. 在 Eclipse 中,在包资源管理器中查找您的项目并右键单击它,然后将其命名为 New -> Folder -> libs
    4. 将 joda-time-2.1.jar 复制/拖动到新创建的 libs 文件夹中。
    5. 再次右键单击您的项目(在包资源管理器中)然后属性 -> Java构建路径 -> 库 -> 添加罐子 -> joda-time-2.1.jar
    6. 现在您可以使用以下代码进行测试:
      DateTime test = new DateTime();

    基本示例

    // Java program to illustrate
    // functions of JODA time
    import org.joda.time.DateTime;
    import org.joda.time.LocalDateTime;
    public class JodaTime {
        public static void main(String[] args)
        {
            DateTime now = new DateTime();
            System.out.println("Current Day: " + now.dayOfWeek().getAsText());
            System.out.println("Current Month: " + now.monthOfYear().getAsText());
            System.out.println("Current Year: " + now.year().getAsText());
            System.out.println("Current Year is Leap Year: " + now.year().isLeap());
      
            // get current date and time
            LocalDateTime dt = LocalDateTime.now();
      
            System.out.println(dt);
        }
    }
    

    输出

    Current Day: Monday
    Current Month: August
    Current Year: 2018
    Current Year is Leap Year: false
    2018-08-06T13:12:16.672
    

    好处:

    • 跨多个Java平台的类似用法。
    • 支持其他日历,例如佛教和埃塞俄比亚日历。
    • 自我报告更好的表现。
    • 易于互操作性:该库在内部使用与 JDK 相同且类似于其他常见时间表示的毫秒瞬间。这使得互操作性变得容易,并且 Joda-Time 具有开箱即用的 JDK 互操作性。

    缺点:

    • 需要安装包,可能需要来自 Joda.org 的更新。

    参考
    包 org.joda.time 的层次结构
    http://www.joda.org/joda-time/
    http://www.joda.org/joda-time/quickstart.html