Android中SimpleDateFormat失效:如何将日期时间转为yyyy-MM-dd格式?
解决Android日期格式化问题:从带时分秒转成yyyy-MM-dd格式
嘿,我来帮你捋捋问题出在哪~你现在的代码没法正常运行,核心问题有两个:
问题根源
- 解析格式不匹配:你要解析的日期字符串是
2015-11-25 23:25:00(带时分秒),但你用的SimpleDateFormat("yyyy-MM-dd")只能解析不带时分秒的日期,格式不对应会直接抛出ParseException,导致代码走异常分支,没法得到正确的Date对象。 - 对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
相关产品推荐
相关产品推荐

