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

Android中从字符串提取日期与时间的方法求助(含ArrayList场景)

嘿,作为编程新手碰到这种日期拆分的问题太正常啦!我给你准备了两种实用的方案,适配你的场景:

解决方法:拆分ISO格式日期时间字符串

你的日期时间字符串是标准的ISO 8601格式(yyyy-MM-dd'T'HH:mm:ss±HH:mm),可以用下面两种方法拆分出日期和时间:

方法一:简单字符串分割(快速直接,适合格式固定的情况)

因为字符串的格式是固定的,我们可以直接用split()方法按特定字符分割:

  • 日期部分在'T'字符之前,所以用split("T")[0]就能提取
  • 时间部分在'T'之后、时区符号'+'之前,所以先按'T'分割取第二部分,再按'+'分割取第一部分(注意+是正则特殊字符,要加\\转义)

结合你的现有代码,修改后的示例如下:

// 从ArrayList中取出第一个日期时间字符串
String fullDateTime = allDate_time.get(0);

// 提取日期部分
String datePart = fullDateTime.split("T")[0];
// 提取时间部分
String timePart = fullDateTime.split("T")[1].split("\\+")[0];

// 将日期设置到TextView
dateView.setText(datePart);
// 如果需要显示时间,可以给另一个TextView设置timePart

方法二:使用Java 8+日期时间API(更规范,推荐长期使用)

Java 8及以后引入的java.time包是专门处理日期时间的工具,比旧的Date/Calendar类更可靠,还能轻松处理时区等复杂情况:

  1. 首先导入相关类(如果是Android项目,API 26及以上直接支持,低版本可以用ThreeTenABP库兼容)
  2. 用标准格式化器解析字符串,再提取日期和时间对象

示例代码:

import java.time.OffsetDateTime;
import java.time.format.DateTimeFormatter;

// ... 你的现有代码 ...

String fullDateTime = allDate_time.get(0);
// 定义匹配ISO偏移日期时间的格式化器
DateTimeFormatter formatter = DateTimeFormatter.ISO_OFFSET_DATE_TIME;
// 解析字符串为OffsetDateTime对象
OffsetDateTime offsetDateTime = OffsetDateTime.parse(fullDateTime, formatter);

// 提取日期并转为字符串
String datePart = offsetDateTime.toLocalDate().toString();
// 提取时间并转为字符串
String timePart = offsetDateTime.toLocalTime().toString();

dateView.setText(datePart);

这种方法的优势是:如果以后你的日期字符串格式有变化(比如时区用Z表示UTC),格式化器依然能正确解析,不会因为分割符位置错误导致异常。

额外提示

如果需要批量处理ArrayList里的所有日期时间字符串,可以用循环遍历:

for (String dt : allDate_time) {
    // 用上面任意一种方法拆分dt,处理日期和时间
    String date = dt.split("T")[0];
    // ... 后续操作 ...
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:49:10