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

如何使用SimpleDateFormat将DD/MM/YYYY格式日期转为带星期的可读格式?

实现方案

核心逻辑分为「输入日期字符串解析为Date对象」+「Date对象格式化为中文周日月展示格式」两步,具体实现如下:

第一步:调整日期解析方法,兼容两种输入格式

你原有代码的convertToDate仅支持解析ISO标准时间格式,需修改为同时支持你提到的DD/MM/YY格式(即示例中的15/09/21):

fun String.convertToDate(): Date? {
    // 按优先级定义需要兼容的解析格式,Locale统一设为中国区域避免乱码
    val parseFormats = listOf(
        SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss", Locale.CHINA),
        SimpleDateFormat("dd/MM/yy", Locale.CHINA)
    )
    parseFormats.forEach { sdf ->
        try {
            return sdf.parse(this)
        } catch (e: ParseException) {
            // 格式不匹配则尝试下一种
        }
    }
    Timber.e("wrong date format - parsing not possible")
    return null
}

第二步:新增Date转目标展示格式的扩展方法

新增方法把解析得到的Date对象格式化为「星期二, 4月1日」这类中文展示效果:

fun Date.formatToChineseDisplay(): String {
    val sdf = SimpleDateFormat("EEEE, M月d日", Locale.CHINA)
    return sdf.format(this)
}

第三步:调用示例

你原有排序逻辑无需调整,需要展示日期的位置直接调用上述格式化方法即可:

// 示例:拿到finishDate后转成目标展示文本
val displayDate = it.finishDate.convertToDate()?.formatToChineseDisplay() ?: "日期异常"

注意事项

  • SimpleDateFormat是线程不安全类,多线程场景下建议每次使用创建新实例,或使用JDK8+的DateTimeFormatter替代
  • 如果你的输入日期是4位年份(如15/09/2021),只需把解析格式的dd/MM/yy改为dd/MM/yyyy即可

转换前日期示例

转换前日期示例

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 14:39:01