前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Java日期处理:格式化、算相差天数、处理日期区间、获当前时间

Java日期处理:格式化、算相差天数、处理日期区间、获当前时间

原创
作者头像
Yeats_Liao
发布2025-01-01 23:12:11
发布2025-01-01 23:12:11
3770
举报

Java 开发中,日期和时间操作重要。本文剖析 Java 日期处理技巧,如格式化、算天数差、处理区间及用 Calendar 获当前时间。有代码示例解析,助开发者掌握技能并在项目中运用。

1. 日期格式化

Java 的 java.text.SimpleDateFormat 类可格式化和解析日期。代码展示创建该对象定义日期格式,将 Date 对象转字符串,也能从特定格式字符串解析出 Date 对象。

代码语言:java
复制
import java.text.SimpleDateFormat;
import java.util.Date;

public class DateFormatExample {
    public static void main(String[] args) {
        Date now = new Date();
        
        // 格式化日期
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String formattedDate = sdf.format(now);
        System.out.println("Formatted Date: " + formattedDate);

        // 解析日期字符串
        String dateStr = "2023-07-15 14:30:00";
        try {
            Date parsedDate = sdf.parse(dateStr);
            System.out.println("Parsed Date: " + parsedDate);
        } catch (ParseException e) {
            e.printStackTrace();
        }
    }
}

2. 计算日期相差天数

Java 8 的 LocalDate 类可算两日期天数差。它是不可变类,表示不包含时间的日期,默认格式“yyyy-MM-dd”。用 ChronoUnit.DAYS.between 算两个 LocalDate 实例天数差。

代码语言:java
复制
import java.time.LocalDate;
import java.time.temporal.ChronoUnit;

public class DateDifferenceExample {
    public static void main(String[] args) {
        LocalDate startDate = LocalDate.of(2022, 1, 1);
        LocalDate endDate = LocalDate.of(2022, 12, 31);

        long daysBetween = ChronoUnit.DAYS.between(startDate, endDate);
        System.out.println("Days between start and end date: " + daysBetween);
    }
}

3. 处理日期区间

可使用java.time包下的LocalDatePeriod类处理日期区间。Period 类用于度量年、月和日的时间,继承自 Object 类并实现 ChronoPeriod 接口,通常表示两个日期之间的间隔,在日期和时间计算操作中方便,适用于处理年、月、日等较大时间单位情况。此代码演示计算两日期间跨越的年、月、日。

代码语言:java
复制
import java.time.LocalDate;
import java.time.Period;

public class DateRangeExample {
    public static void main(String[] args) {
        LocalDate startDate = LocalDate.of(2022, 1, 1);
        LocalDate endDate = LocalDate.of(2022, 12, 31);

        Period period = Period.between(startDate, endDate);
        System.out.println("Years: " + period.getYears());
        System.out.println("Months: " + period.getMonths());
        System.out.println("Days: " + period.getDays());
    }
}

4. 使用Calendar获取当前时间

Calendar 类是抽象类,操作日期和时间,提供获取、设置、计算方法,用于日期和时间字段转换及操作。Java 8 后有新 API,但仍广泛用于旧版 Java 项目获取系统当前时间。

代码语言:java
复制
import java.util.Calendar;

public class CurrentTimeWithCalendar {
    public static void main(String[] args) {
        Calendar calendar = Calendar.getInstance();
        int year = calendar.get(Calendar.YEAR);
        int month = calendar.get(Calendar.MONTH) + 1; // 注意月份是从0开始的
        int dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH);
        int hour = calendar.get(Calendar.HOUR_OF_DAY);
        int minute = calendar.get(Calendar.MINUTE);
        int second = calendar.get(Calendar.SECOND);

        System.out.println("Current Time: " + year + "-" + month + "-" + dayOfMonth + " " + hour + ":" + minute + ":" + second);
    }
}

5.区别总结

SimpleDateFormat:Java 8 前,用于日期格式化和解析,适用用户界面展示、日志记录、数据库存储等。

LocalDateChronoUnit:Java 8 及以上,处理日期和算天数差,适用于统计活动持续时长、订单有效期、项目工期等。

Period:处理日期区间,返回年、月、日数量,用于分析数据趋势、生成报表、安排计划等。

Calendar类虽被替代,但在兼容旧版场景有用,如触发定时任务、记录操作时间戳、显示实时时间等。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 日期格式化
  • 2. 计算日期相差天数
  • 3. 处理日期区间
  • 4. 使用Calendar获取当前时间
  • 5.区别总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档