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

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

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包下的LocalDate或Period类处理日期区间。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 前,用于日期格式化和解析,适用用户界面展示、日志记录、数据库存储等。

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

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

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

相关推荐

想问10月去哪个国家旅游好(10月去国外哪里旅游最好)
365app手机版官方

想问10月去哪个国家旅游好(10月去国外哪里旅游最好)

📅 09-17 👁️ 3083
数学建模十大常用软件(转)
bt365体育网址

数学建模十大常用软件(转)

📅 08-08 👁️ 3586
地下城光之根源怎么获得
beat365在线体育打不开

地下城光之根源怎么获得

📅 09-19 👁️ 6811
武侠乂问答
bt365体育网址

武侠乂问答

📅 07-18 👁️ 6927
东莞哪里有苹果手机店
bt365体育网址

东莞哪里有苹果手机店

📅 09-11 👁️ 6517
介意英文句子
beat365在线体育打不开

介意英文句子

📅 07-05 👁️ 3899
骚白2亿签约斗鱼,如今一个月收入2万元,曾经的承诺如今变笑话
五七准备什么祭品?五七需要准备的4大类祭品
bt365体育网址

五七准备什么祭品?五七需要准备的4大类祭品

📅 08-24 👁️ 574
【Camera基础(二)】摄像头驱动原理和开发&&V4L2子系统驱动架构