Java Date案例如何获取时间

wen java案例 21

本文目录导读:

Java Date案例如何获取时间

  1. 使用 java.util.Date(旧版,但仍常用)
  2. 使用 java.util.Calendar(推荐用于旧项目)
  3. 使用 SimpleDateFormat 格式化日期
  4. Java 8+ 新日期时间 API(推荐使用)
  5. 获取时间戳的不同方式
  6. 推荐使用

我来介绍几种在 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.Calendarjava.util.Date
  • 简单场景new Date() 配合 SimpleDateFormat 格式化

java.time 包是不可变的、线程安全的,且API设计更合理,是新项目的首选。

抱歉,评论功能暂时关闭!