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

Android中SimpleDateFormat失效:如何将日期时间转为yyyy-MM-dd格式?

解决Android日期格式化问题:从带时分秒转成yyyy-MM-dd格式

嘿,我来帮你捋捋问题出在哪~你现在的代码没法正常运行,核心问题有两个:


问题根源

  1. 解析格式不匹配:你要解析的日期字符串是2015-11-25 23:25:00(带时分秒),但你用的SimpleDateFormat("yyyy-MM-dd")只能解析不带时分秒的日期,格式不对应会直接抛出ParseException,导致代码走异常分支,没法得到正确的Date对象。
  2. 对Date对象的误解:Date本质是一个时间戳,它不存储任何格式信息,你看到的打印结果是Date默认的toString()输出,不是你设置的格式化后的样子。如果你的目标是得到yyyy-MM-dd格式的字符串,直接返回Date是没用的,得返回格式化后的字符串。

修正后的解决方案

根据你的需求,分两种场景给你代码:

场景1:把带时分秒的日期字符串转成yyyy-MM-dd格式的字符串

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class DateUtils {
    // 把"yyyy-MM-dd HH:mm:ss"格式的字符串转成"yyyy-MM-dd"
    public static String convertToYMD(String dateString) {
        // 定义输入字符串的格式(和你的原始日期格式匹配)
        SimpleDateFormat inputFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        // 定义你想要的输出格式
        SimpleDateFormat outputFormat = new SimpleDateFormat("yyyy-MM-dd");
        
        try {
            // 先按输入格式解析成Date对象
            Date date = inputFormat.parse(dateString);
            // 再按输出格式转成字符串
            return outputFormat.format(date);
        } catch (ParseException e) {
            e.printStackTrace();
            // 解析失败时的 fallback,比如返回原字符串或者默认日期
            return "解析失败";
        }
    }
}

场景2:获取当前日期并转成yyyy-MM-dd格式的字符串

public static String getCurrentYMDDate() {
    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
    return format.format(new Date());
}

调用示例

比如你要处理原始日期字符串:

String originalDate = "2015-11-25 23:25:00";
String formattedDate = DateUtils.convertToYMD(originalDate);
System.out.println(formattedDate); // 输出:2015-11-25

这样就能得到你想要的日期格式啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:29:36