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类更可靠,还能轻松处理时区等复杂情况:
- 首先导入相关类(如果是Android项目,API 26及以上直接支持,低版本可以用ThreeTenABP库兼容)
- 用标准格式化器解析字符串,再提取日期和时间对象
示例代码:
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
相关产品推荐
相关产品推荐

