2021-04-18 11:34  阅读(91)
文章分类:Java 基础教程 文章标签:JavaJava 教程
©  原文作者:w3cschool 原文地址:https://www.w3cschool.cn/java/java-date-time-methods.html

Java日期时间方法

在 Java Date-Time API 中的方法名称尽可能在类之间保持一致。

例如,now方法返回当前时刻的日期或时间值。from方法允许从一个类转换到另一个类。

下表列出了常用的前缀:

  • of
    静态工厂方法
    工厂方法创建一个实例并验证输入参数
  • from
    静态工厂方法将输入参数转换为目标类的实例。
  • parse
    静态工厂方法
    解析输入字符串以创建目标类的实例。
  • format
    实例方法
    格式化临时对象以产生字符串。
  • get
    实例方法
    返回目标对象的一部分。
  • is
    实例方法
    查询目标对象。
  • with
    实例方法
    返回一个元素已更改的目标对象的副本。
  • plus
    实例方法
    返回具有添加的时间量的对象的副本。
  • minus
    实例方法
    返回具有减去时间量的对象的副本。
  • to
    实例方法
    将此对象转换为另一种类型。
  • at
    实例方法
    将此对象与另一个对象组合。

of()方法

Java 日期时间 API 的 XXX()方法用于创建对象。

以下代码显示了如何创建 LocalDate 类的对象:

    import java.time.LocalDate;
    import java.time.Month;
    
    public class Main {
      public static void main(String[] args) {
        LocalDate localDate1  = LocalDate.of(2014, 5, 21); 
        System.out.println(localDate1);
        
        LocalDate localDate2  = LocalDate.of(2014, Month.MARCH, 4);
        System.out.println(localDate2);
        
        LocalDate localDate3  = LocalDate.ofEpochDay(2014);
        System.out.println(localDate3);
        
        LocalDate localDate4  = LocalDate.ofYearDay(2014, 39);
        System.out.println(localDate4);
      }
    }
    

上面的代码生成以下结果。

202104181135_1.png

from()方法

from()是一个静态工厂方法,用于从指定的参数派生 datetime 对象。

of()不同,from()需要对指定参数进行数据转换。

以下代码显示如何从 LocalDateTime 派生 LocalDate:

    import java.time.LocalDate;
    import java.time.LocalDateTime;
    
    public class Main {
      public static void main(String[] args) {
        LocalDateTime  localDateTime = LocalDateTime.of(2015, 6,  21,  13, 40);
        System.out.println(localDateTime);
        
        LocalDate localDate  = LocalDate.from(localDateTime);
        System.out.println(localDate);
      }
    }
    

上面的代码生成以下结果。

202104181134_2.png

with()方法

要更改 datetime 对象中的字段,我们可以使用带有前缀的方法。

withXXX()方法返回一个对象的副本,指定的字段已更改,因为 Date Time API 中的大多数对象都是不可变的。

以下代码显示如何从另一个 LocalDate 获取 LocalDate,并更改年份:

    import java.time.LocalDate;
    import java.time.Month;
    
    public class Main {
      public static void main(String[] args) {
        LocalDate localDate1  = LocalDate.of(2014, Month.MAY,  2);
        System.out.println(localDate1);
        
        LocalDate localDate2  = localDate1.withYear(2015);
        System.out.println(localDate2);
        
        LocalDate localDate3  = localDate1.withYear(2014).withMonth(7);
        System.out.println(localDate3);
        
      }
    }
    

上面的代码生成以下结果。

202104181134_3.png

getXXX()方法

getXXX()返回对象的指定元素。

以下代码显示如何从LocalDate对象获取年,月和日:

    import java.time.LocalDate;
    import java.time.Month;
    
    public class Main {
      public static void main(String[] args) {
        LocalDate localDate = LocalDate.of(2014, 6, 21);
        int year = localDate.getYear();
        System.out.println(year);
        Month month = localDate.getMonth();
        System.out.println(month);
    
        int day = localDate.getDayOfMonth();
        System.out.println(day);
    
      }
    }
    

上面的代码生成以下结果。

202104181134_4.png

toXXX()方法

toXXX()将对象转换为相关类型。

以下代码显示了使用 toXXX() 方法的一些示例。

    import java.time.LocalDate;
    
    public class Main {
      public static void main(String[] args) {
        LocalDate localDate = LocalDate.of(2014, 6, 21); 
        long days = localDate.toEpochDay(); 
        System.out.println(days);
    
      }
    }
    

上面的代码生成以下结果。

202104181134_5.png

atXXX()方法

atXXX()从带有附加信息的现有 datetime 对象创建一个新的 datetime 对象。

以下代码在方法中使用以向日期对象添加附加信息。

    import java.time.LocalDate;
    import java.time.LocalDateTime;
    
    public class Main {
      public static void main(String[] args) {
        LocalDate localDate  = LocalDate.of(2014, 6, 21);
        System.out.println(localDate);
    
        LocalDateTime  localTime1 = localDate.atStartOfDay();
        System.out.println(localTime1);
    
        LocalDateTime  localTime2 = localDate.atTime(16, 21);
        System.out.println(localTime2);
      }
    }
    

上面的代码生成以下结果。

202104181134_6.png

以下代码显示了如何使用支持构建器模式来构建本地日期的atXXX()方法:

    import java.time.LocalDate;
    import java.time.Year;
    
    public class Main {
      public static void main(String[] args) {
        LocalDate localDate  = Year.of(2014).atMonth(6).atDay(21);
        System.out.println(localDate);
    
      }
    }
    

上面的代码生成以下结果。

202104181134_7.png

plusXXX()方法

plusXXX()通过添加指定的值来返回对象的副本。

以下代码显示如何使用plus方法向本地添加更多时间日期对象。

    import java.time.LocalDate;
    
    public class Main {
      public static void main(String[] args) {
        LocalDate localDate  = LocalDate.of(2014, 6, 21); 
        LocalDate localDate1  = localDate.plusDays(5);   
        System.out.println(localDate1);
        LocalDate localDate2  = localDate.plusMonths(3);
        System.out.println(localDate2);
        LocalDate localDate3  = localDate.plusWeeks(3);        
        System.out.println(localDate3);
      }
    }
    

上面的代码生成以下结果。

202104181134_8.png

minusXXX()方法

minusXXX()通过减去指定的值来返回对象的副本。

以下代码显示如何从本地日期对象中减去时间。

    import java.time.LocalDate;
    
    public class Main {
      public static void main(String[] args) {
        LocalDate localDate  = LocalDate.of(2014, 6, 21); 
        LocalDate localDate1  = localDate.minusMonths(5);   
        System.out.println(localDate1);
        LocalDate localDate2  = localDate.minusWeeks(3);
        System.out.println(localDate2);
      }
    }
    

上面的代码生成以下结果。

202104181134_9.png

now()方法

now() 方法返回各种类的当前时间,例如 LocalDate,LocalTime,LocalDateTime,ZonedDateTime。

以下代码显示如何使用 now()方法返回当前日期和时间。

    import java.time.LocalDate;
    import java.time.LocalDateTime;
    import java.time.LocalTime;
    import java.time.ZonedDateTime;
    
    public class Main {
      public static void main(String[] args) {
        LocalDate localDate = LocalDate.now(); 
        System.out.println(localDate);
        
        LocalTime  localTime  = LocalTime.now();
        System.out.println(localTime);
        
        LocalDateTime  dateTime  = LocalDateTime.now();
        System.out.println(dateTime);
        
        ZonedDateTime dateTimeWithZone  = ZonedDateTime.now();
        System.out.println(dateTimeWithZone);
      }
    }
    

上面的代码生成以下结果。

202104181134_10.png

点赞(0)
版权归原创作者所有,任何形式转载请联系作者; Java 技术驿站 >> Java 日期时间方法
上一篇
Java 多维数组
下一篇
Java 实例/持续时间