You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将日期字符串转为yyyyMMdd格式Java.sql.Date并存入SQL?

解决Java日期转换与格式化问题

核心说明

java.sql.Date本身是存储日期数值的对象,它的toString()方法默认输出yyyy-MM-dd格式,但这只是它的字符串表现形式。要得到yyyyMMdd格式的结果,需要单独做格式化处理;同时废弃的Date(int year, int month, int day)构造方法,我们用Java 8+推荐的java.time包API替代。

实现步骤与代码示例

1. 解析输入字符串并转换为java.sql.Date

使用LocalDate(Java 8+日期API)解析输入字符串,再通过java.sql.Date.valueOf()方法转换为java.sql.Date对象,这是替代废弃构造方法的标准方式:

import java.time.LocalDate;
import java.sql.Date;

public class DateConvertDemo {
    public static void main(String[] args) {
        String fromUser = "2002-10-29";
        
        // 解析字符串为LocalDate
        LocalDate localDate = LocalDate.parse(fromUser);
        // 转换为java.sql.Date
        Date sqlDate = Date.valueOf(localDate);
        
        // 直接打印sqlDate会输出默认格式:2002-10-29
        System.out.println("默认sqlDate输出:" + sqlDate);
    }
}

2. 格式化为yyyyMMdd纯数字字符串

如果需要得到20021029格式的结果,使用DateTimeFormatter进行格式化,既可以直接格式化LocalDate,也可以格式化java.sql.Date(它实现了java.time.temporal.TemporalAccessor接口):

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.sql.Date;

public class DateFormatDemo {
    public static void main(String[] args) {
        String fromUser = "2002-10-29";
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd");
        
        // 方式1:格式化LocalDate
        LocalDate localDate = LocalDate.parse(fromUser);
        String formattedStr1 = localDate.format(formatter);
        System.out.println("格式化LocalDate结果:" + formattedStr1); // 输出20021029
        
        // 方式2:格式化java.sql.Date
        Date sqlDate = Date.valueOf(localDate);
        String formattedStr2 = formatter.format(sqlDate);
        System.out.println("格式化sqlDate结果:" + formattedStr2); // 输出20021029
    }
}

为什么之前用SimpleDateFormat没得到想要的结果?

你之前用SimpleDateFormat得到yyyy-MM-dd,大概率是直接打印了java.sql.Date对象——它的toString()方法硬编码了yyyy-MM-dd格式,和你用的格式化工具无关。必须显式调用格式化方法,才能得到自定义格式的字符串。

内容的提问来源于stack exchange,提问作者Ken

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 14:45:33