📋 目录
一、工具类功能
按你要的形态取当前时间,Date、LocalDate、LocalDateTime 与格式化字符串四种入口齐全,另给一个按目标类型取值的泛型入口,默认格式 yyyy-MM-dd HH:mm:ss。
二、所需环境
JDK 17或以上
三、方法与调用示例(按需调用)
🔢 方法序号:1
🎯 方法用途:
- 取当前时间的
java.util.Date,交给只认这个类型的老接口 - 老代码、老框架的字段类型是
Date时用它,新代码不必再跟着用
🧩 方法定义:public static Date nowDate()
🗣️ 入参解释:public static Date nowDate()(无入参)
📤 返回值解释:Date,精确到毫秒的当前时间,不为 null
💡 边界口径:
Date属历史遗留类型,仅为对接老代码保留,新代码优先LocalDateTime与LocalDate- 毫秒值就是
System.currentTimeMillis()那一档精度,纳秒位不保留 toString()的输出跟随 JVM 默认时区
🧪 方法示例:
nowDate()拿到Tue Oct 13 12:00:55 CST 2026nowDate().getTime()拿到毫秒值1791864055032
🔢 方法序号:2
🎯 方法用途:
- 取当天日期,不含时分秒
- 按天统计、日期比较、生效日期这类只看日历的场景用它
🧩 方法定义:public static LocalDate nowLocalDate()
🗣️ 入参解释:public static LocalDate nowLocalDate()(无入参)
📤 返回值解释:LocalDate,当天日期,不为 null
💡 边界口径:
- 取的是 JVM 默认时区的今天,跨时区服务各自算自己的当天
- 对象不可变,可以直接当 Map key 与比较基准
- 要时分秒用
nowLocalDateTime(),别拿它补零
🧪 方法示例:
nowLocalDate()拿到2026-10-13,只到日不含时分秒nowLocalDate().getYear()与getDayOfMonth()拿到2026与13
🔢 方法序号:3
🎯 方法用途:
- 取当前日期时间,新代码首选的默认入口
- 落库时间字段、计算时间差、和业务时间比较都用它
🧩 方法定义:public static LocalDateTime nowLocalDateTime()
🗣️ 入参解释:public static LocalDateTime nowLocalDateTime()(无入参)
📤 返回值解释:LocalDateTime,当前日期时间,不为 null
💡 边界口径:
- 不带时区,按 JVM 默认时区取值,跨时区一致性问题要自己带时区解决
- 纳秒位按系统时钟精度给出,可能出现整秒为 0 的情况
- 与
Date互转请走Instant,别用毫秒值手工除
🧪 方法示例:
nowLocalDateTime()拿到2026-10-13T12:00:55.044830700nowLocalDateTime().getDayOfWeek()拿到TUESDAY
🔢 方法序号:4
🎯 方法用途:
- 按默认格式
yyyy-MM-dd HH:mm:ss取当前时间串 - 日志、导出、接口字段这类要直接可展示的文本时间用它
🧩 方法定义:public static String nowString()
🗣️ 入参解释:public static String nowString()(无入参)
📤 返回值解释:String,默认格式的时间串,长度 19
💡 边界口径:
- 默认格式器预构建成常量复用,高频取时间不会重复构建
- 只到秒,要毫秒或别的样式走带格式串的重载
- 结果按 JVM 默认区域与时区生成,跨区域一致性要自己指定格式
🧪 方法示例:
nowString()拿到2026-10-13 12:00:55- 连续取用长度稳定,
nowString().length()反复拿到19
🔢 方法序号:5
🎯 方法用途:
- 按自定义格式串取当前时间串,紧凑格式、只要日期、带毫秒都能给
- 文件名时间戳、报文里的固定样式这类有明确格式要求时用
🧩 方法定义:public static String nowString(String pattern)
🗣️ 入参解释:public static String nowString(格式串)
📤 返回值解释:String,按指定格式输出的时间串
💡 边界口径:
- 格式串为 null 或空白时回退默认格式,不抛异常
- 格式串本身非法(字母引用没闭合、未知模式字母)抛
IllegalArgumentException - 格式里的文本字段(
MMM、EEE等)按 JVM 默认区域输出,要跨环境一致就只用纯数字格式 - 解析器按格式串缓存复用,同一格式反复取用是稳定的
🧪 方法示例:
nowString("yyyyMMddHHmmss")拿到20261013120055nowString("yyyy-MM-dd")拿到2026-10-13,只要日期nowString("HH:mm:ss.SSS")拿到12:00:55.045,只到时分秒带毫秒- 格式串给
" "拿到[2026-10-13 12:00:55],空白回退默认格式,传 null 同理 - 中文区域下
nowString("yyyy年MM月")拿到2026年10月,文本字段随区域 - 同区域下
nowString("EEEE")拿到星期二,要跨环境一致就只用数字格式 nowString("yyyy-'MM")抛Pattern ends with an incomplete string literal: yyyy-'MMnowString("ABC")抛Unknown pattern letter: C
🔢 方法序号:6
🎯 方法用途:
- 按目标类型取当前时间,类型当参数传,适合写通用转换器
- 目标类型来自配置或元数据、代码里不想写四个分支时用它
🧩 方法定义:public static <T> T getNow(Class<T> type)
🗣️ 入参解释:public static <T> T getNow(目标类型)
📤 返回值解释:T,Date、LocalDate、LocalDateTime 或 String,均不为 null
💡 边界口径:
- 目标是
String时走默认格式,要自定义格式用两参版 - 类型不在支持范围(如
Long)抛IllegalArgumentException type传 null 抛NullPointerException- 返回实例的类型与传入的
Class一致,可以直接赋值不用强转
🧪 方法示例:
getNow(LocalDate.class)拿到2026-10-13getNow(String.class)走默认格式拿到2026-10-13 12:00:55getNow(Date.class) instanceof Date拿到truegetNow(null)抛type 不能为 null
🔢 方法序号:7
🎯 方法用途:
- 按类型取当前时间并带格式串,格式只对
String目标生效 - 类型与格式都要参数化(比如导出列定义)时用这一版
🧩 方法定义:public static <T> T getNow(Class<T> type, String pattern)
🗣️ 入参解释:public static <T> T getNow(目标类型, 格式串)
📤 返回值解释:T,非 String 类型返回对应的时间对象
💡 边界口径:
- 目标不是
String时格式串被忽略,拿到的仍是对象,不会报错 - 格式串非法只在目标是
String时抛IllegalArgumentException - 空白格式串对
String目标回退默认格式 - 支持范围的判定与单参版一致
🧪 方法示例:
getNow(String.class, "yyyyMMdd-HHmm")拿到20261013-1200- 给
LocalDateTime.class传格式串,getNow(LocalDateTime.class, "yyyyMMdd") instanceof LocalDateTime拿到true,格式被忽略 - 目标类型给
Long.class抛不支持的时间类型: java.lang.Long
四、工具类源码(可直接复制)
📦 源码文件