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工具兼容),具体实现步骤如下:
- 定义输入、输出的日期格式规则
- 解析API返回的原始日期字符串为日期对象
- 将日期对象格式化为目标格式的字符串
- 处理解析失败的异常场景
完整代码示例:
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
相关产品推荐
相关产品推荐

