Java 时间类(上):JDK7 及以前时间类 Date、SimpleDateFormat、Calendar 最全总结

Java 时间类(上):JDK7 及以前时间类 Date、SimpleDateFormat、Calendar 最全总结
在这里插入图片描述
🏠个人主页:黎雁
🎬作者简介:C/C++/JAVA后端开发学习者
❄️个人专栏:C语言数据结构(C语言)EasyXJAVA游戏规划程序人生
✨ 从来绝巘须孤往,万里同尘即玉京
在这里插入图片描述


文章目录

在这里插入图片描述

Java 时间类(上):JDK7 及以前时间类 Date、SimpleDateFormat、Calendar 最全总结 🕒

本文适合 Java 初学者、准备面试、需要系统梳理时间 API 的同学,内容超详细,建议收藏反复看~

📝 文章摘要

  • 阅读时长:10 分钟
  • 适合人群
    1. Java 零基础小白 → 重点看:概念、构造方法、代码示例
    2. 正在学习 Java 常用类的同学 → 重点看:格式转换、日历字段、易错点
    3. 面试复习 → 重点看:月份从 0 开始、星期规则、时间毫秒值
  • 本文内容:系统讲解 JDK7 及以前传统时间 API,包括时间单位、Date、SimpleDateFormat、Calendar 四大核心知识点,附带完整代码 + 细节说明。

一、时间相关基础知识点 ⏱

在学习 Java 时间类之前,我们先搞懂时间标准单位换算,这是所有时间类的底层基础。

1. 时间标准

  • GMT(Greenwich Mean Time):格林尼治时间,老式标准时间
  • UTC(Coordinated Universal Time):世界协调时间,目前使用原子钟计时,是现代标准

2. 时间单位与换算

单位从小到大:
秒(s) → 毫秒(ms) → 微秒(μs) → 纳秒(ns) → 皮秒(ps) → 飞秒(fs)

相邻单位进率:1000

公式:
[
1s = 10^3 ms = 10^6 \mu s = 10^9 ns = 10^{12} ps = 10^{15} fs
]

Java 中所有时间类,底层存储都是毫秒值
1970年1月1日 00:00:00(UTC)到当前时间的总毫秒数。

二、Date 时间类 📅

1. 概述

  • java.util.Date,必须导包
  • 表示一个瞬间,精确到毫秒
  • 可以看做是 Java 写好的时间 JavaBean

2. 构造方法

方法名说明
public Date()创建对象,表示当前系统时间
public Date(long date)创建对象,表示指定毫秒值对应的时间

3. 成员方法

方法名说明
public void setTime(long time)设置/修改时间毫秒值
public long getTime()获取时间对象对应的毫秒值

4. 代码示例

importjava.util.Date;publicclassDateDemo01{publicstaticvoidmain(String[] args){// 1. 获取当前时间Date d1 =newDate();System.out.println(d1);// 2. 指定时间:1970-01-01 00:00:00Date d2 =newDate(0L);System.out.println(d2);// 东八区会显示 08:00:00// 3. 修改时间 d2.setTime(1000L);// 加 1 秒System.out.println(d2);// 4. 获取毫秒值long time = d2.getTime();System.out.println(time);// 1000}}
✨ 小细节:
中国属于东八区,比标准时间快 8 小时,所以 0 毫秒值会显示 08:00:00

三、SimpleDateFormat 格式化与解析 ✍️

1. 作用

  • 格式化:Date 对象 → 好看的字符串(如 2026-02-10 12:00:00
  • 解析:字符串时间 → Date 对象

2. 包路径

java.text.SimpleDateFormat

3. 构造方法

方法名说明
public SimpleDateFormat()默认格式
public SimpleDateFormat(String pattern)指定格式(最常用)

4. 核心方法

方法名说明
String format(Date date)格式化:日期 → 字符串
Date parse(String source)解析:字符串 → 日期

5. 日期模式字母

字母含义
y
M
d
H时(24小时制)
m
s
S毫秒

常用格式:
yyyy-MM-dd HH:mm:ss
yyyy年MM月dd日 HH:mm:ss

6. 代码示例

importjava.text.ParseException;importjava.text.SimpleDateFormat;importjava.util.Date;publicclassSimpleDateFormatDemo01{publicstaticvoidmain(String[] args)throwsParseException{Date d =newDate(0L);// 1. 默认格式SimpleDateFormat sdf1 =newSimpleDateFormat();System.out.println(sdf1.format(d));// 2. 自定义格式SimpleDateFormat sdf2 =newSimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");System.out.println(sdf2.format(d));// 3. 字符串解析成 DateString str ="2023-11-11 11:11:11";SimpleDateFormat sdf =newSimpleDateFormat("yyyy-MM-dd HH:mm:ss");Date date = sdf.parse(str);System.out.println(date.getTime());}}
⚠️ 注意:
parse 方法会抛出 ParseException,必须处理(throws / try-catch)。

四、Calendar 日历类 📆

1. 概述

  • java.util.Calendar
  • 抽象类,不能直接 new,通过 getInstance() 获取对象
  • 可以单独获取/修改:年、月、日、时、分、秒、星期

2. 获取对象

Calendar c =Calendar.getInstance();

底层会根据系统时区、语言返回不同的子类对象。

3. 常用方法

方法名说明
int get(int field)获取某个字段
void set(int field, int value)修改某个字段
void add(int field, int amount)增加/减少时间
Date getTime()转成 Date 对象
long getTimeInMillis()获取时间毫秒值

4. 日历常用字段(背)

  • Calendar.YEAR:年
  • Calendar.MONTH:月(0~11,不是 1~12)
  • Calendar.DAY_OF_MONTH:日
  • Calendar.DAY_OF_WEEK:星期(周日为1,周一2…周六7

5. 代码示例

importjava.util.Calendar;importjava.util.Date;publicclassCalendarDemo01{publicstaticvoidmain(String[] args){Calendar c =Calendar.getInstance();// 设置年月日 c.set(2026,8,10);// 月份减 1 c.add(Calendar.MONTH,-1);// 获取int year = c.get(Calendar.YEAR);int month = c.get(Calendar.MONTH)+1;// +1 才是真实月份int day = c.get(Calendar.DAY_OF_MONTH);int weekIndex = c.get(Calendar.DAY_OF_WEEK);System.out.println(year +"年"+ month +"月"+ day +"日 "+getWeek(weekIndex));}// 星期转换publicstaticStringgetWeek(int index){String[] arr ={"","星期日","星期一","星期二","星期三","星期四","星期五","星期六"};return arr[index];}}
⚠️ 超级大坑:月份:0 代表 1 月,11 代表 12 月星期:1 是周日,2 是周一,7 是周六
实际开发一定要做转换

📌 本篇知识回顾

  1. Java 时间底层都是毫秒值,从 1970-1-1 开始算
  2. Date:表示时间,获取/设置毫秒值
  3. SimpleDateFormat:格式化 & 解析,掌握 yyyy-MM-dd HH:mm:ss
  4. Calendar:抽象类,通过 getInstance() 获取
    • 月份 0~11
    • 星期 1=周日

✍️ 写在最后

本篇我们系统学完了 JDK7 及以前的传统时间类,它们虽然好用,但存在线程不安全、设计不优雅等问题,所以 JDK8 推出了全新的时间 API。

下一篇我们将学习:
JDK8 全新时间类:LocalDate、LocalTime、LocalDateTime、Instant、DateTimeFormatter 等,更加简洁、安全、强大!

如果你觉得本文对你有帮助,欢迎 点赞 👍、收藏 💾、评论 💬,后续持续更新 Java 基础精讲系列~

Read more

喂饭级教程:OpenClaw 对接 QQ 机器人,本地/腾讯云都能用

喂饭级教程:OpenClaw 对接 QQ 机器人,本地/腾讯云都能用

文章目录 * 前言 * 一、选对路子:官方 Bot 还是个人号? * 方案 A:QQ 开放平台官方机器人 * 方案 B:个人 QQ 号变身机器人 * 二、环境准备:5 分钟搞定基础设施 * 1. 服务器/电脑要求 * 2. 安装 OpenClaw * 3. 配置大模型 API * 三、方案 A:对接 QQ 开放平台官方机器人 * Step 1:注册开发者并创建机器人 * Step 2:获取三件套凭证 * Step 3:配置 IP 白名单和沙箱 * Step 4:OpenClaw 端配置

By Ne0inhk
VSCode Copilot 终极魔改:以智谱 GLM-4.6 为例,一文搞定任意大模型接入

VSCode Copilot 终极魔改:以智谱 GLM-4.6 为例,一文搞定任意大模型接入

VSCode Copilot 终极魔改:以智谱 GLM-4.6 为例,一文搞定任意大模型接入 前言:为何你的 Copilot 需要一次“魔改”? 本文旨在帮助所有希望突破 VSCode Copilot 模型限制、追求更高代码效率和性价比的开发者。如果你也曾面临以下困境,那么这篇文章就是为你量身打造的: * Copilot 官方模型不够用:想尝试最新、最强的国产模型(如智谱 GLM、文心一言、Kimi)却无从下手。 * API 订阅成本高:官方或其他国外模型的订阅费和按量计费(通常以美元结算)让个人开发者望而却步。 * 替代品体验有瑕疵:其他辅助插件在某些场景下不如原生的 Copilot 轻便、流畅。 本文将提供一个终极解决方案:通过一个 VSCode 插件,无缝接入任何支持 OpenAI 兼容接口的大模型。我将以当前备受瞩目的国产模型智谱 GLM-4.6 为例,

By Ne0inhk
llamafactory微调qwen3-vl详细流程

llamafactory微调qwen3-vl详细流程

llamafactory微调qwen3-vl详细流程 目标:本文讲详细介绍多模态大模型使用llama-factory进行多模态模型微调(sft)的全部流程,以及微调后合并和工业落地部署方案。具体包括: 1. 环境安装部署 2. 数据集准备 3. 启动微调 4. 模型合并 5. 模型部署和请求方式(vllm部署) 示例模型: qwen2.5-vl-instruct qwen3-vl-instruct 环境安装 llama-factory环境准备 方式1 git直接下载 git clone --depth https://github.com/hiyouga/LLaMA-Factory.git 方式2 下载项目压缩包再解压 python环境安装 1. python虚拟环境创建 * conda create --name llama_env python=3.12 (默认已安装好anaconda或者minianaconda) * conda

By Ne0inhk
合规为基,场景为锚:文心一言API接入的备案要求与深度场景合规解析

合规为基,场景为锚:文心一言API接入的备案要求与深度场景合规解析

在做备案咨询的时候,我被问得最多的问题就是“我们接了文心一言的API,到底要不要去网信办备案?” 很多企业的心态很微妙:不备案怕被下架,去备案又觉得流程繁琐像剥层皮。其实,备案的核心不在于你用了谁的模型,而在于你怎么用、给谁用。 尤其是接入文心一言这种通过国家网信办生成式人工智能服务备案的头部大模型时,很多老板容易产生一个误区:“底座都合规了,我用一下还需要备案?” 答案没那么简单。今天我们抛开枯燥的法条,直接从实操角度,从文心一言这类的合规边界掰开了讲讲。 一、 政策红线 我国对算法的监管逻辑其实很直白:只要你的服务能对公众产生影响,尤其是能生成内容、引导舆论,那就必须管。这并非针对某一家企业,而是对互联网信息服务的底层约束。 按照《生成式人工智能服务管理暂行办法》,提供具有舆论属性或者社会动员能力的生成式人工智能服务的,应当按照国家有关规定开展安全评估,并履行备案手续。如果企业产品未经备案直接上线,且具有交互功能的服务,一旦被监管抽查发现,面临的不仅是应用下架,还可能涉及行政处罚,甚至影响企业主体的信用评级。 二、 真实场景的合规判定 与其死磕政策,不如对号入座看看你

By Ne0inhk