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

如何移除字符串数组元素的末尾字符?日期格式转换技术求助

嘿,这个需求我帮你搞定!结合你的Android开发场景,给你两个实用的方案,直接就能用到你的MainActivity里:

方案一:字符串直接分割(简单高效,适合固定格式)

因为你的字符串格式是固定的"日期 - 时间",直接按分隔符" - "分割取前半部分就行,代码写起来超简单:

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // 模拟你的原始日期时间列表
        ArrayList<String> originalDateTimeList = new ArrayList<>();
        originalDateTimeList.add("11 04 2017 - 12:45:54");
        originalDateTimeList.add("05 09 2024 - 18:20:00");

        // 存储提取后的纯日期列表
        ArrayList<String> dateOnlyList = new ArrayList<>();

        // 遍历原始列表,分割提取日期
        for (String dateTimeStr : originalDateTimeList) {
            // 按" - "分割字符串,取第一个元素就是日期
            String dateStr = dateTimeStr.split(" - ")[0].trim();
            dateOnlyList.add(dateStr);
        }

        // 可以打印日志验证结果
        for (String date : dateOnlyList) {
            Log.d("MainActivity", "提取的日期:" + date);
        }
    }
}

注:trim()是为了防止字符串前后意外出现空格,让结果更严谨。如果你的原始字符串绝对没有多余空格,也可以去掉。

方案二:日期格式化解析(健壮可靠,推荐)

如果担心未来字符串格式可能有变化(比如分隔符空格数量调整、时间格式微调),用日期格式化工具解析会更稳妥,还能处理异常情况:

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ArrayList<String> originalDateTimeList = new ArrayList<>();
        originalDateTimeList.add("11 04 2017 - 12:45:54");
        originalDateTimeList.add("05 09 2024 - 18:20:00");

        ArrayList<String> dateOnlyList = new ArrayList<>();

        // 定义原始格式和目标格式
        SimpleDateFormat inputFormat = new SimpleDateFormat("dd MM yyyy - HH:mm:ss", Locale.getDefault());
        SimpleDateFormat outputFormat = new SimpleDateFormat("dd MM yyyy", Locale.getDefault());

        for (String dateTimeStr : originalDateTimeList) {
            try {
                // 解析字符串为Date对象
                Date date = inputFormat.parse(dateTimeStr);
                // 格式化为纯日期字符串
                String dateStr = outputFormat.format(date);
                dateOnlyList.add(dateStr);
            } catch (ParseException e) {
                // 处理解析失败的情况(比如格式错误的字符串)
                e.printStackTrace();
                dateOnlyList.add("无效日期"); // 可以替换成你需要的默认值
            }
        }

        // 验证结果
        for (String date : dateOnlyList) {
            Log.d("MainActivity", "提取的日期:" + date);
        }
    }
}
Android 8.0+ 更优写法

如果你的App只适配Android 8.0(API 26)及以上版本,推荐用java.time包下的工具类,它是线程安全的,比SimpleDateFormat更可靠:

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ArrayList<String> originalDateTimeList = new ArrayList<>();
        originalDateTimeList.add("11 04 2017 - 12:45:54");
        originalDateTimeList.add("05 09 2024 - 18:20:00");

        ArrayList<String> dateOnlyList = new ArrayList<>();

        DateTimeFormatter inputFormatter = DateTimeFormatter.ofPattern("dd MM yyyy - HH:mm:ss", Locale.getDefault());
        DateTimeFormatter outputFormatter = DateTimeFormatter.ofPattern("dd MM yyyy", Locale.getDefault());

        for (String dateTimeStr : originalDateTimeList) {
            try {
                LocalDateTime localDateTime = LocalDateTime.parse(dateTimeStr, inputFormatter);
                String dateStr = localDateTime.format(outputFormatter);
                dateOnlyList.add(dateStr);
            } catch (DateTimeParseException e) {
                e.printStackTrace();
                dateOnlyList.add("无效日期");
            }
        }

        // 验证结果
        for (String date : dateOnlyList) {
            Log.d("MainActivity", "提取的日期:" + date);
        }
    }
}

总结一下:如果格式绝对固定,方案一足够高效;如果要兼顾健壮性和扩展性,方案二或者Android 8.0+的写法更合适。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 07:58:27