当前位置: 首页 > article >正文

LeetCode1507 转变日期格式

破解独特日期格式转换难题

在 Java 编程的征程中,处理日期格式犹如攀登崎岖山路,时不时就会遇到些棘手状况。今天,就迫不及待地要和大家分享一道超具代表性的日期格式转换题目,相信跟着思路走一趟,你对日期处理这一块儿的技能肯定能直线飙升。

题目详情

给定一个字符串 date,它遵循着特定的 “Day Month Year” 格式。这里面的门道可不少,Day 带着各种序数后缀,像 {"1st", "2nd", "3rd", "4th",..., "30th", "31st"} 这些,个性十足;Month 呢,是从 {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"} 中选取;Year 也被框定在 [1900, 2100] 这个范围里。咱们的终极目标,就是要施展编程魔法,把它华丽变身为通用的 “YYYY-MM-DD” 格式。

解题妙法剖析

接下来,深入探究一下攻克这道题的巧妙思路,总共分三步:

拆解字符串获取关键信息

首先,得把这个看似复杂的 date 字符串大卸八块,从中精准提取出日、月、年的信息。这时候,Java 里的 split(" ") 方法就派上用场啦,它像一把锋利的手术刀,沿着空格将字符串完美切割,得到的数组 parts 里,依次存放着日、月、年的原始信息。比如说,对于输入 “15th Aug 2025”,切割后 parts[0] 就是 “15th”,parts[1] 是 “Aug”,parts[2] 为 “2025”,是不是很清晰?

精心处理日与月的信息

拿到原始信息后,就得对其深加工了。先看日的处理,用 substring 方法把 Day 中的序数后缀利落地切除,只留下纯粹的数字。要是这数字孤孤单单只有一位,那必须得给它在前面加个 “0”,让它以两位数的优雅姿态登场。比如 “5th”,处理后就变成 “05”。

再轮到月的转换,面对 Month 的英文缩写,switch 语句挺身而出,化身为专业翻译官,将每个英文缩写精准对应到 1 - 12 的数字月份。像 “Jan” 对应 1,“Feb” 对应 2,以此类推,绝不出错。

按标准格式拼接成果

经过前面的精细打磨,日、月、年的信息都已准备就绪,最后一步,就是用 String.format 这个强大工具,按照 “YYYY-MM-DD” 的经典模板,把它们严丝合缝地拼接起来。比如,年是 “2025”,月经过处理变成 “08”,日是 “05”,拼接后输出的就是 “2025-08-05”,完美符合要求。

代码实例呈现

下面,就是用 Java 实现上述精彩思路的代码,赶紧来瞅瞅:

class Solution {
    public String reformatDate(String date) {
        // 按空格拆分日期字符串
        String[] parts = date.split(" ");
        // 处理日,去除序数后缀,确保两位数格式
        String day = parts[0].substring(0, parts[0].length() - 2);
        if (day.length() == 1) {
            day = "0" + day;
        }
        // 转换月,英文缩写变数字月份
        String monthStr = parts[1];
        int month = 0;
        switch (monthStr) {
            case "Jan":
                month = 1;
                break;
            case "Feb":
                month = 2;
                break;
            case "Mar":
                month = 3;
                break;
            case "Apr":
                month = 4;
                break;
            case "May":
                month = 5;
                break;
            case "Jun":
                month = 6;
                break;
            case "Jul":
                month = 7;
                break;
            case "Aug":
                month = 8;
                break;
            case "Sep":
                month = 9;
                break;
            case "Oct":
                month = 10;
                break;
            case "Nov":
                month = 11;
                break;
            case "Dec":
                month = 12;
                break;
        }
        // 提取年
        String year = parts[2];
        // 按标准格式拼接结果
        return String.format("%s-%02d-%s", year, month, day);
    }
}

public class Main {
    public static void main(String[] args) {
        Solution solution = new Solution();
        String date = "15th Aug 2025";  // 这里可以替换成你想要测试的日期字符串
        String result = solution.reformatDate(date);
        System.out.println(result);
    }
}
  • Solution 类里的 reformatDate 方法实现了具体的日期格式转换逻辑,前面已经详细介绍过其思路和步骤。
  • Main 类中的 main 方法是程序的入口点,在这里创建了 Solution 类的实例,然后传入一个测试的日期字符串调用 reformatDate 方法进行转换,并将转换后的结果输出打印。

 

深度总结与拓展畅想

通过搞定这道题,咱们在 Java 日期处理领域可是迈出了坚实的一大步。不仅熟练掌握了字符串分割、截取、拼接这些基础操作,还学会了如何依据特定规则巧妙转换日期格式,利用 switch 语句应对多分支情况。

但探索的脚步可不能就此停歇,还有广阔天地等着我们去开拓呢!要是输入的日期格式更加五花八门,比如夹杂着中文月份、其他语言的序数词,又该如何巧妙化解?再或者,从性能优化的角度出发,如果要降低时间复杂度和空间复杂度,有没有奇思妙想?不妨动动脑子,动手改改代码,相信每一次尝试都会让你在编程之路上越走越远,越攀越高


http://www.kler.cn/a/466043.html

相关文章:

  • Qt之屏幕录制设计(十六)
  • 基于Web的足球青训俱乐部管理后台系统的设计与开发源码(springboot+mysql+vue)
  • zookeeper 数据类型
  • 论文泛读《LPFHE: Low-Complexity Polynomial CNNs for Secure Inference over FHE》
  • 【数据仓库】hadoop web UI 增加账号密码认证
  • 米哈游可切换角色背景动态壁纸
  • c++不够用知识补充-using namespace
  • 经纬度噪点与误差处理的优化
  • Beamer-LaTeX学习(教程批注版)【1】
  • 【计算机网络】课程 作业一 搭建连续覆盖的办公网络
  • Conda 安装 Jupyter Notebook
  • 深入解析Reactive Programming框架在微服务中的最新应用
  • 鸿蒙NEXT开发中使用星闪服务
  • 线性代数考研笔记
  • 汽车燃油软件标定测试
  • 机器学习算法深度解析:以支持向量机(SVM)为例及实战应用
  • 贪心算法概述
  • git rest --hard
  • aardio —— 虚表 —— 使用ownerDrawCustom列类型制作喜马拉雅播放器列表
  • 详解:如何通过 request-promise 和代理 IP 发送 HTTP 请求
  • Linux下gdb调试工具的详解及Core文件分析
  • 华夏ERP系统部署
  • 配置 F-32/F-44清账附加项修改
  • ue5 迁移资产
  • 【人工智能数据科学与数据处理】——深入详解人工智能数据科学与数据处理之数据可视化工具与库:Matplotlib、Seaborn、Plotly等
  • 项目管理系统概念、价值与核心功能全面解析