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

Kotlin中如何将2021-07-14T00:00:00.000-0300字符串转为日/月份格式

Kotlin 日期字符串转换实现方案

以下方案基于java.time包实现(JDK 8+ 原生支持,Android 环境 API Level < 26 需开启核心库脱糖支持),可直接替换你原有函数的逻辑:

完整实现代码

import java.time.OffsetDateTime
import java.time.format.DateTimeFormatter
import java.util.Locale

private fun ajusteDeData(baseData: String): String {
    // 输入字符串格式匹配器
    val inputFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSZ")
    // 英文月份全称输出格式,指定Locale.US避免系统语言影响输出
    val monthFormatter = DateTimeFormatter.ofPattern("MMMM", Locale.US)

    return runCatching {
        val date = OffsetDateTime.parse(baseData, inputFormatter)
        val dayOfMonth = date.dayOfMonth
        // 计算日期序数后缀
        val ordinalSuffix = when {
            // 11、12、13为特殊情况,统一用th
            dayOfMonth in 11..13 -> "th"
            dayOfMonth % 10 == 1 -> "st"
            dayOfMonth % 10 == 2 -> "nd"
            dayOfMonth % 10 == 3 -> "rd"
            else -> "th"
        }
        val monthName = date.format(monthFormatter)
        "$dayOfMonth$ordinalSuffix/$monthName"
    }.getOrDefault(baseData) // 解析失败时返回原输入,可按需调整为其他兜底逻辑
}

核心逻辑说明

  • 输入格式匹配:yyyy-MM-dd'T'HH:mm:ss.SSSZ 可完全匹配你给出的2021-07-14T00:00:00.000-0300格式,其中Z对应末尾的时区偏移量
  • 序数后缀处理:单独处理11、12、13三个特殊值,其余日期按个位数字匹配对应的st/nd/rd/th后缀
  • 本地化兼容:显式指定Locale.US保证月份始终输出英文全称,不会随系统语言变化

内容的提问来源于stack exchange,提问作者Giovani Leite Vitor

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 06:51:00