关于Java8中日期的使用

本文详细介绍了Java8中新引入的LocalDate类的使用方法,包括如何获取当前日期、指定日期、日期加减操作及日期格式化等,同时提供了与传统Date类之间的转换示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java8提供了一个新的日期类,是线程安全的。而且好多业务情况都有了具体的实现。直接贴代码了

/**

 * 关于日期的一些业务常见的操作使用方式,以localDate为例.其余的localDateTime与之相似.

 * <p>

 * 全部日期的操作都得遵循ISO-8601(协调世界时).

 * 

 * @author jxj

 *

 */

public class DateTest2 {

 

  @Test

  public void dateTest() {

    // 获取本地日期.

    LocalDate ld = LocalDate.now();

    System.out.println(ld);

    // 获取某个时区的本地日期.

    LocalDate ld1 = LocalDate.now(ZoneId.of("UTC"));

    System.out.println(ld1);

    // 将日期固定到某年某月某日.

    LocalDate ld2 = LocalDate.of(1992, 5, 20);

    System.out.println(ld2);

    // 将日期固定到某个年月日(关于月份的话Java8中封装了一个Month类,可以去使用).

    LocalDate ld3 = LocalDate.of(1992, Month.MAY, 20);

    System.out.println(ld3);

    // 固定日期的年份和具体日期.默认月份为一月份.

    LocalDate ld4 = LocalDate.ofYearDay(2011, 3);

    System.out.println(ld4);

    // 将日期从1970-01-01开始,往前或者往后推多少天后的日期.

    LocalDate ld5 = LocalDate.ofEpochDay(-31);

    System.out.println(ld5);

    // 严格按照ISO-8601的yyyy-MM-dd的方式去进行验证.(如果不足10,必须填充0.比如1999-2-2是不通过编译的)

    LocalDate ld6 = LocalDate.parse("2009-09-09");

    System.out.println(ld6);

 

    /**

     * 下边根据获取到的日期再做一系列的操作.

     */

    // 获取某日期的开始时间.遵循ISO-8601.

    LocalDateTime ldt = ld.atStartOfDay();

    System.out.println(ldt);

    // 将某个日期往前推多少天.

    LocalDate ld7 = ld.minusDays(3);

    System.out.println(ld7);

    // 获取某个日期是周几.(返回值为DayOfWeek.和Month类的方法一致)

    DayOfWeek dw = ld.getDayOfWeek();

    System.out.println(dw);

    // 获取本年到现在过了多少天.

    int dy = ld.getDayOfYear();

    System.out.println(dy);

    // 获取本月这个日期到现在过了多少天.

    int dm = ld.getDayOfMonth();

    System.out.println(dm);

    // 某个日期往后推多少天.

    LocalDate ld8 = ld.plusDays(3);

    System.out.println(ld8);

  }

 

  /**

   * Date和localDate的相互转换.

   */

  @Test

  public void convertLocalDate() {

    Date date = new Date();

    System.out.println(date);

    // 首先先将日期转为Instant类型

    Instant is = date.toInstant();

    System.out.println(is);

    // 然后选择一个转换的时区

    ZoneId zoneId = ZoneId.systemDefault();

    System.out.println(zoneId);

    LocalDate ld = is.atZone(zoneId).toLocalDate();

    System.out.println(ld);

  }

 

  /**

   * localDate转Date.

   */

  @Test

  public void convertDate() {

    LocalDate ld = LocalDate.now();

    ZoneId zoneId = ZoneId.systemDefault();

    ZonedDateTime zdt = ld.atStartOfDay(zoneId);

    Date date = Date.from(zdt.toInstant());

    System.out.println(date);

  }

  

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值