日期格式化和解析、LocalDate、LocalTime、LocalDateTime

一、SimpleDateFormat类

        SimpleDateFormat是一个具体的类,用于以区域设置敏感的方式格式化和解析日期。

        格式化(从Date到String): public final String format(Date date):将日期格式化成日期/时间字符串。

        解析(从String到Date):public Date parse(String source):从给定字符串的开始解析文本以生成日期。

        示例代码:

public class SimpleDateFormatDemo {
    public static void main(String[] args) throws ParseException {
        //格式化:从 Date 到 String
        Date d = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
        String s = sdf.format(d);
        System.out.println(s);
        System.out.println("--------");

        //从 String 到 Date
        String ss = "2024-08-24 16:24:30";
        //ParseException
        SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date dd = sdf2.parse(ss);
        System.out.println(dd);
    }
}

二、LocalDate类

        LocalDate类不能代表时间线上的即时信息,只是日期描述。

        获取日期对象的方法:

//按指定日期创建LocalDate对象
LocalDate date = LocalDate.of(2024,8,30);
//从默认时区的系统时钟获取当前日期
LocalDate now = LocalDate.now();

三、LocalTime类

        LocalTime类用来表示时区的时间,通常表示的是时、分、秒。

//获取时间
LocalTime time1 = LocalTime.now();
LocalTime time2 = LocalTime.of();

四、LocalDateTime类

        LocalDateTime类是LocalDate类LocalTime类的综合,既包含日期也包含时间。

        1.创建方法

方法名说明
public static LocalDateTime now()获取当前系统时间
public static LocalDateTime of (年, 月 , 日, 时, 分, 秒)使用指定年月日和时分秒初始化一个LocalDateTime对象
public class Date {
    public static void main(String[] args) {
        LocalDateTime now = LocalDateTime.now();
        System.out.println(now);

        LocalDateTime localDateTime = LocalDateTime.of(2024,8,30,16,24,30);
        System.out.println(localDateTime);
    }
}

         2.获取相应的值的方法

public int getYear()获取年
public int getMonthValue()获取月份(1-12)
public int getDayOfMonth()获取月份中的第几天(1-31)
public int getDayOfYear()获取一年中的第几天(1-366)
public DayOfWeek getDayOfWeek()获取星期
public int getMinute()获取分钟
public int getHour()获取小时
public class 8Date{
    public static void main(String[] args) {
        LocalDateTime localDateTime = LocalDateTime.of(2024,8,30,16,24,30);
        //public int getYear()           获取年
        int year = localDateTime.getYear();
        System.out.println("年为" +year);
        //public int getMonthValue()     获取月份(1-12)
        int month = localDateTime.getMonthValue();
        System.out.println("月份为" + month);

        Month month1 = localDateTime.getMonth();
        System.out.println(month1);

        //public int getDayOfMonth()     获取月份中的第几天
        int day = localDateTime.getDayOfMonth();
        System.out.println("日期为" + day);

        //public int getDayOfYear()      获取一年中的第几天
        int dayOfYear = localDateTime.getDayOfYear();
        System.out.println("这是一年中的第" + dayOfYear + "天");

        //public DayOfWeek getDayOfWeek()获取星期
        DayOfWeek dayOfWeek = localDateTime.getDayOfWeek();
        System.out.println("星期为" + dayOfWeek);

        //public int getMinute()        获取分钟
        int minute = localDateTime.getMinute();
        System.out.println("分钟为" + minute);
        //public int getHour()           获取小时
  
        int hour = localDateTime.getHour();
        System.out.println("小时为" + hour);
    }
}

        3.LocalDateTime格式化和解析代码示例:

public class JDK8DateDemo5 {
    public static void main(String[] args) {
        //method1();
        //method2();
    }

    private static void method2() {
        //public static LocalDateTime parse (准备解析的字符串, 解析格式) 把一个日期字符串解析成为一个LocalDateTime对象
        String s = "2024年8月30日 16:24:30";
        DateTimeFormatter pattern = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss");
        LocalDateTime parse = LocalDateTime.parse(s, pattern);
        System.out.println(parse);
    }

    private static void method1() {
        LocalDateTime localDateTime = LocalDateTime.of(2024,8,30,16,24,30);
        System.out.println(localDateTime);
        //public String format (指定格式)   把一个LocalDateTime格式化成为一个字符串
        DateTimeFormatter pattern = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss");
        String s = localDateTime.format(pattern);
        System.out.println(s);
    }
}

  • 15
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
**LocalDateLocalDateTime之间的转化主要涉及日期和时间的操作。** 首先,了解这两个类的定义: - **LocalDate**: 表示没有时间的日期(年、月、日)。 - **LocalDateTime**: 表示日期和时间的组合。 以下是一些常见的转换操作: 1. **从LocalDateLocalDateTime**: 要将`LocalDate`转换为`LocalDateTime`,您需要提供一个`LocalTime`实例。例如,如果您有一个代表当前日期的`LocalDate`实例,并且想要将其转换为当天午夜开始的`LocalDateTime`,可以使用`LocalTime.MIDNIGHT`常量。代码示例如下: ```java LocalDate date = LocalDate.now(); LocalDateTime dateTime = LocalDateTime.of(date, LocalTime.MIDNIGHT); ``` 2. **从LocalDateTimeLocalDate**: 要从`LocalDateTime`获取`LocalDate`,可以简单地调用`toLocalDate()`方法。这将丢弃时间部分,只保留日期。代码示例如下: ```java LocalDateTime dateTime = LocalDateTime.now(); LocalDate date = dateTime.toLocalDate(); ``` 3. **格式化输出**: 如果您需要将`LocalDate`或`LocalDateTime`转换为字符串,可以使用`DateTimeFormatter`类来指定输出格式。例如,要将日期格式化为"yyyy-MM-dd",可以使用以下代码: ```java DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyy-MM-dd"); String dateStr = date.format(fmt); ``` 4. **解析输入**: 如果您有日期或日期时间的字符串表示,并希望将其转换为`LocalDate`或`LocalDateTime`对象,也可以使用`DateTimeFormatter`的`parse`方法。例如: ```java LocalDate parsedDate = LocalDate.parse("2021-06-15", fmt); ``` 请注意,这些转换不涉及任何时区信息,因为`LocalDate`和`LocalDateTime`都是不可变的且不包含时区的日期和日期时间对象。如果需要处理时区,您应该使用`ZonedDateTime`或`OffsetDateTime`类。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值