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

求Android Studio 3.0中日期格式转换代码片段(含带时间场景)

Android Studio 3.0 日期格式转换方案

针对你提到的两种日期字符串转换需求,我整理了对应的代码片段,同时附上关键注意事项:

1. 转换"2018-04-20"为"20 April, 2018"

这里需要用SimpleDateFormat定义输入和输出格式,重点要指定英文Locale,避免月份显示为中文:

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

public class DateUtils {
    public static String convertShortDate(String inputDate) {
        // 输入格式:yyyy-MM-dd
        SimpleDateFormat inputFormat = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH);
        // 输出格式:dd MMMM, yyyy
        SimpleDateFormat outputFormat = new SimpleDateFormat("dd MMMM, yyyy", Locale.ENGLISH);
        
        try {
            Date date = inputFormat.parse(inputDate);
            return outputFormat.format(date);
        } catch (ParseException e) {
            e.printStackTrace();
            // 转换失败时返回原字符串或自定义提示
            return inputDate;
        }
    }
}

// 使用示例
String originalDate = "2018-04-20";
String formattedDate = DateUtils.convertShortDate(originalDate);
// 输出结果:20 April, 2018

2. 处理带时间的日期字符串"2018-04-20 12:30:00"

根据需求不同,分为两种处理方式:

2.1 保留时间的转换(比如转成"20 April, 2018 12:30 PM")

public static String convertDateTime(String inputDateTime) {
    // 输入格式:yyyy-MM-dd HH:mm:ss
    SimpleDateFormat inputFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.ENGLISH);
    // 输出格式:dd MMMM, yyyy hh:mm a(12小时制带AM/PM)
    SimpleDateFormat outputFormat = new SimpleDateFormat("dd MMMM, yyyy hh:mm a", Locale.ENGLISH);
    
    try {
        Date date = inputFormat.parse(inputDateTime);
        return outputFormat.format(date);
    } catch (ParseException e) {
        e.printStackTrace();
        return inputDateTime;
    }
}

// 使用示例
String originalDateTime = "2018-04-20 12:30:00";
String formattedDateTime = DateUtils.convertDateTime(originalDateTime);
// 输出结果:20 April, 2018 12:30 PM

2.2 只提取日期部分(转成"20 April, 2018")

只需调整输入格式适配带时间的字符串,输出格式和第一种情况一致:

public static String extractDateFromDateTime(String inputDateTime) {
    SimpleDateFormat inputFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.ENGLISH);
    SimpleDateFormat outputFormat = new SimpleDateFormat("dd MMMM, yyyy", Locale.ENGLISH);
    
    try {
        Date date = inputFormat.parse(inputDateTime);
        return outputFormat.format(date);
    } catch (ParseException e) {
        e.printStackTrace();
        return inputDateTime;
    }
}

关键注意事项

  • Locale设置:必须指定Locale.ENGLISH,否则月份名称会跟随系统语言显示(比如中文环境下会显示"四月")。
  • 线程安全:SimpleDateFormat不是线程安全的,不要将其声明为静态变量在多线程环境中使用,建议每次调用时创建实例,或者用ThreadLocal封装。
  • 异常处理:一定要捕获ParseException,避免因输入字符串格式错误导致崩溃。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:46:27