首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 程式設計入門

Java 日期時間操作:給指定日期或當前日期增加天數的完整指南

     編輯:Java 程式設計入門

核心方案:使用 Calendar 類(傳統方式)

雖然 Java 8 引入了更優秀的 java.time 包,但在維護舊代碼時仍需掌握 Calendar 與 SimpleDateFormat 的組合用法。

1. 給指定日期字符串增加天數

/**
 * 將指定日期字符串增加指定天數
 * @param days 增加的天數(可為負數減少天數)
 * @param dateStr 日期字符串,格式:yyyy-MM-dd HH:mm:ss
 * @return 處理後的日期字符串
 * @throws ParseException 日期格式解析異常
 */
public String addDaysToDate(int days, String dateStr) throws ParseException {
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    Date date = sdf.parse(dateStr);
    
    Calendar cal = Calendar.getInstance();
    cal.setTime(date);
    cal.add(Calendar.DATE, days); // 核心操作:日期字段加減
    
    return sdf.format(cal.getTime());
}

// 調用示例
String result = addDaysToDate(1, "2016-03-30 22:17:01"); // 2016-03-31 22:17:01

2. 給當前系統日期增加天數

/**
 * 當前日期增加指定天數
 * @param days 增加天數
 * @return 結果日期字符串
 */
public String addDaysToNow(int days) {
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    Calendar cal = Calendar.getInstance(); // 默認獲取當前時間
    cal.add(Calendar.DATE, days);
    return sdf.format(cal.getTime());
}

// 調用示例
String tomorrow = addDaysToNow(1);
String nextWeek = addDaysToNow(7);

現代化方案:Java 8+ java.time 包(推薦)

LocalDateTime 線程安全、不可變、API 更直觀:

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

public String addDaysModern(int days, String dateStr) {
    DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
    LocalDateTime ldt = dateStr == null ? LocalDateTime.now() : LocalDateTime.parse(dateStr, fmt);
    return ldt.plusDays(days).format(fmt);
}

關鍵注意點

  • Calendar.DATE 等同於 Calendar.DAY_OF_MONTH
  • add() 會自動處理月份進位、閏年等邊界情況
  • SimpleDateFormat 非線程安全,多線程環境下請使用 ThreadLocal 或 Java 8 新 API
  • 數據庫交互建議統一使用 java.time.LocalDateTime 或 Instant
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved