Java 开发中,日期和时间操作重要。本文剖析 Java 日期处理技巧,如格式化、算天数差、处理区间及用 Calendar 获当前时间。有代码示例解析,助开发者掌握技能并在项目中运用。
Java 的 java.text.SimpleDateFormat
类可格式化和解析日期。代码展示创建该对象定义日期格式,将 Date 对象转字符串,也能从特定格式字符串解析出 Date 对象。
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();
}
}
}
Java 8 的 LocalDate
类可算两日期天数差。它是不可变类,表示不包含时间的日期,默认格式“yyyy-MM-dd”。用 ChronoUnit.DAYS.between 算两个 LocalDate 实例天数差。
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);
}
}
可使用java.time
包下的LocalDate
或Period
类处理日期区间。Period 类用于度量年、月和日的时间,继承自 Object 类并实现 ChronoPeriod 接口,通常表示两个日期之间的间隔,在日期和时间计算操作中方便,适用于处理年、月、日等较大时间单位情况。此代码演示计算两日期间跨越的年、月、日。
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());
}
}
Calendar 类是抽象类,操作日期和时间,提供获取、设置、计算方法,用于日期和时间字段转换及操作。Java 8 后有新 API,但仍广泛用于旧版 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);
}
}
SimpleDateFormat
:Java 8 前,用于日期格式化和解析,适用用户界面展示、日志记录、数据库存储等。
LocalDate
和ChronoUnit
:Java 8 及以上,处理日期和算天数差,适用于统计活动持续时长、订单有效期、项目工期等。
Period
:处理日期区间,返回年、月、日数量,用于分析数据趋势、生成报表、安排计划等。
Calendar
类虽被替代,但在兼容旧版场景有用,如触发定时任务、记录操作时间戳、显示实时时间等。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。