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

Android中如何将API返回的2023-01-02转为02-01-2023格式

Android日期格式转换实现方案

首先,你的代码存在顺序错误——先调用setText再执行findViewById,这会触发空指针异常,必须先绑定控件再设置文本:

TextView txt_Date_Number = findViewById(R.id.tv_date);
txt_Date_Number.setText(post.Date_Number);

接下来是核心的日期格式转换,推荐使用Android 8.0+原生支持的java.time包(低版本可通过Desugar工具兼容),具体实现步骤如下:

  1. 定义输入、输出的日期格式规则
  2. 解析API返回的原始日期字符串为日期对象
  3. 将日期对象格式化为目标格式的字符串
  4. 处理解析失败的异常场景

完整代码示例:

TextView txt_Date_Number = findViewById(R.id.tv_date);
String originalDate = post.Date_Number; // 原始格式:2023-01-02

// 定义格式器
DateTimeFormatter inputFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
DateTimeFormatter outputFormatter = DateTimeFormatter.ofPattern("dd-MM-yyyy");

try {
    // 解析原始日期
    LocalDate date = LocalDate.parse(originalDate, inputFormatter);
    // 转换为目标格式
    String formattedDate = date.format(outputFormatter);
    // 设置到TextView
    txt_Date_Number.setText(formattedDate);
} catch (DateTimeParseException e) {
    // 解析失败时的兜底处理
    txt_Date_Number.setText("日期格式错误");
    e.printStackTrace();
}

如果需要兼容Android 7.0及以下版本,可以使用SimpleDateFormat(注意:该类非线程安全,不要全局复用):

TextView txt_Date_Number = findViewById(R.id.tv_date);
String originalDate = post.Date_Number;

SimpleDateFormat inputFormat = new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault());
SimpleDateFormat outputFormat = new SimpleDateFormat("dd-MM-yyyy", Locale.getDefault());

try {
    Date date = inputFormat.parse(originalDate);
    String formattedDate = outputFormat.format(date);
    txt_Date_Number.setText(formattedDate);
} catch (ParseException e) {
    txt_Date_Number.setText("日期格式错误");
    e.printStackTrace();
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 08:30:50