本文目录导读:

- 使用 java.util.Date(旧版,但仍常用)
- 使用 java.util.Calendar(推荐用于旧项目)
- 使用 SimpleDateFormat 格式化日期
- Java 8+ 新日期时间 API(推荐使用)
- 获取时间戳的不同方式
- 推荐使用
我来介绍几种在 Java 中获取时间的常用方法:
使用 java.util.Date(旧版,但仍常用)
import java.util.Date;
public class DateExample {
public static void main(String[] args) {
// 获取当前时间
Date now = new Date();
System.out.println("当前时间: " + now);
// 获取时间戳(毫秒)
long timestamp = now.getTime();
System.out.println("时间戳: " + timestamp);
// 获取各个时间字段(已废弃,不推荐)
int year = now.getYear() + 1900; // 年份需要加1900
int month = now.getMonth() + 1; // 月份从0开始
int day = now.getDate();
System.out.printf("日期: %d年%d月%d日%n", year, month, day);
}
}
使用 java.util.Calendar(推荐用于旧项目)
import java.util.Calendar;
public class CalendarExample {
public static void main(String[] args) {
// 获取 Calendar 实例
Calendar calendar = Calendar.getInstance();
// 获取各个时间字段
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH) + 1; // 月份从0开始
int day = calendar.get(Calendar.DAY_OF_MONTH);
int hour = calendar.get(Calendar.HOUR_OF_DAY); // 24小时制
int minute = calendar.get(Calendar.MINUTE);
int second = calendar.get(Calendar.SECOND);
System.out.printf("当前时间: %d年%d月%d日 %d:%d:%d%n",
year, month, day, hour, minute, second);
// 获取星期几
int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
String[] weekDays = {"周日", "周一", "周二", "周三", "周四", "周五", "周六"};
System.out.println("今天是: " + weekDays[dayOfWeek - 1]);
}
}
使用 SimpleDateFormat 格式化日期
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateFormatExample {
public static void main(String[] args) {
Date now = new Date();
// 常用日期格式
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("完整格式: " + sdf1.format(now));
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
System.out.println("中文格式: " + sdf2.format(now));
SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy/MM/dd");
System.out.println("日期格式: " + sdf3.format(now));
SimpleDateFormat sdf4 = new SimpleDateFormat("HH:mm:ss");
System.out.println("时间格式: " + sdf4.format(now));
}
}
Java 8+ 新日期时间 API(推荐使用)
import java.time.LocalDate;
import java.time.LocalTime;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
public class Java8DateTimeExample {
public static void main(String[] args) {
// 获取当前日期
LocalDate today = LocalDate.now();
System.out.println("当前日期: " + today);
// 获取当前时间
LocalTime now = LocalTime.now();
System.out.println("当前时间: " + now);
// 获取当前日期和时间
LocalDateTime dateTime = LocalDateTime.now();
System.out.println("当前日期时间: " + dateTime);
// 格式化为指定格式
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String formatted = dateTime.format(formatter);
System.out.println("格式化后: " + formatted);
// 获取各个字段
System.out.println("年: " + dateTime.getYear());
System.out.println("月: " + dateTime.getMonthValue());
System.out.println("日: " + dateTime.getDayOfMonth());
System.out.println("时: " + dateTime.getHour());
System.out.println("分: " + dateTime.getMinute());
System.out.println("秒: " + dateTime.getSecond());
}
}
获取时间戳的不同方式
import java.time.Instant;
public class TimestampExample {
public static void main(String[] args) {
// 方法1:System.currentTimeMillis()
long timestamp1 = System.currentTimeMillis();
System.out.println("时间戳(毫秒): " + timestamp1);
// 方法2:Date.getTime()
long timestamp2 = new java.util.Date().getTime();
System.out.println("时间戳(毫秒): " + timestamp2);
// 方法3:Instant(Java 8+)
Instant instant = Instant.now();
long timestamp3 = instant.toEpochMilli();
System.out.println("时间戳(毫秒): " + timestamp3);
}
}
推荐使用
- Java 8+:优先使用
java.time包(LocalDate, LocalTime, LocalDateTime) - 旧项目:使用
java.util.Calendar或java.util.Date - 简单场景:
new Date()配合SimpleDateFormat格式化
java.time 包是不可变的、线程安全的,且API设计更合理,是新项目的首选。