如何使用SimpleDateFormat在Java中格式化日期?
创建并使用 SimpleDateFormat 需要传入格式字符串,如 new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");2. 注意大小写敏感、避免混用单字母格式及 YYYY 和 DD 的误用;3. SimpleDateFormat 不是线程安全的,多线程环境下应每次新建实例或使用 ThreadLocal;4. 使用 parse 方法解析字符串时需捕获 ParseException,并注意结果不带时区信息;5. Java 8 及以上推荐使用 DateTimeFormatter 和 LocalDateTime 替代。
在 Java 中使用 SimpleDateFormat
格式化日期是一个很常见的操作,但需要注意它的用法和一些潜在的坑。下面是一些你可能会关心的问题和实用建议。

如何创建并使用 SimpleDateFormat?
要格式化日期,首先需要创建一个 SimpleDateFormat
实例,并传入你想要的日期格式。例如:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String formattedDate = sdf.format(new Date());
上面这段代码会输出类似 2025-04-05 14:30:00
的字符串。
这里的格式字符串 "yyyy-MM-dd HH:mm:ss"
是关键,其中:

yyyy
表示年份MM
表示月份(注意是大写)dd
表示日期HH
表示24小时制的小时mm
表示分钟ss
表示秒
你可以根据需求自由组合这些部分,比如 "yyyy/MM/dd"
或者 "HH:mm"
都是可以的。
常见格式错误和注意事项
使用时有几个容易出错的地方:

- 大小写敏感:
hh
是12小时制,而HH
是24小时制;mm
是分钟,MM
是月份。 - 不要混用单字母格式:比如
y
表示年份,但实际中推荐使用yyyy
来避免歧义。 - 线程安全问题:
SimpleDateFormat
不是线程安全的,如果你在多线程环境下使用它,最好每次都新建一个实例或者使用ThreadLocal
包装。
举个例子,下面这个格式就容易出错:
new SimpleDateFormat("YYYY-mm-DD")
这里用了 YYYY
和 DD
,它们虽然看起来像“年月日”,但实际上 YYYY
是“周年的年”(与 yyyy
不同),DD
是一年中的第几天(不是月中的天)。这种错误会导致结果不符合预期。
如何解析字符串为日期?
除了格式化,SimpleDateFormat
还能将字符串解析成 Date
对象:
String input = "2025-04-05 14:30:00"; SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date date = sdf.parse(input);
但要注意:
- 如果输入格式不匹配,会抛出
ParseException
- 解析后的
Date
对象是“原始时间点”,不带时区信息 - 如果输入中包含 AM/PM 等信息,格式中也要加上
a
并确保语言环境一致
替代方案:Java 8 及以上推荐使用 java.time
如果你使用的是 Java 8 或更高版本,建议使用 java.time
包中的类,比如 DateTimeFormatter
和 LocalDateTime
,它们更现代、线程安全且 API 更清晰:
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); String formatted = LocalDateTime.now().format(formatter);
虽然这超出了 SimpleDateFormat
的范畴,但在新项目中更值得推荐。
基本上就这些。只要记住格式字符串的规则和线程安全问题,用起来就不难了。
以上是如何使用SimpleDateFormat在Java中格式化日期?的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undress AI Tool
免费脱衣服图片

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

testthepdfinanotherapptoderineiftheissueiswiththefileoredge.2.enablethebuilt inpdfviewerbyTurningOff“ eflblyopenpenpenpenpenpdffilesexternally”和“ downloadpdffiles” inedgesettings.3.clearbrowsingdatainclorwearbrowsingdataincludingcookiesandcachedcachedfileresteroresoreloresorelorsolesoresolesoresolvereresoreorsolvereresoreolversorelesoresolvererverenn

Importjava.ioandjava.net.SocketforI/Oandsocketcommunication.2.CreateaSocketobjecttoconnecttotheserverusinghostnameandport.3.UsePrintWritertosenddataviaoutputstreamandBufferedReadertoreadserverresponsesfrominputstream.4.Usetry-with-resourcestoautomati

容器化Java应用:创建Dockerfile,使用基础镜像如eclipse-temurin:17-jre-alpine,复制JAR文件并定义启动命令,通过dockerbuild构建镜像并用dockerrun测试本地运行。2.推送镜像到容器注册表:使用dockertag标记镜像并推送到DockerHub等注册表,需先登录dockerlogin。3.部署到Kubernetes:编写deployment.yaml定义Deployment,设置副本数、容器镜像和资源限制,编写service.yaml创建

VSCode中可通过快捷键快速切换面板与编辑区。要跳转至左侧资源管理器面板,使用Ctrl Shift E(Windows/Linux)或Cmd Shift E(Mac);返回编辑区可用Ctrl `或Esc或Ctrl 1~9。相比鼠标操作,键盘快捷键更高效且不打断编码节奏。其他技巧包括:Ctrl KCtrl E聚焦搜索框,F2重命名文件,Delete删除文件,Enter打开文件,方向键展开/收起文件夹。

runthewindowsupdatetrubloubleshooterviaSettings>更新&安全> is esseShootsoAtomationfixCommonissues.2.ResetWindowSupDateComponentsByStoppingRealatedServices,RenamingTheSoftWaredWaredWaredSoftwaredSistribution andCatroot2Folders,intrestrestartingthertingthertingtherserviceSteStoceTocle

JavaserializationConvertSanObject'SstateIntoAbyTeSteAmForStorageorTransermission,andDeserializationReconstructstheObjectStheObjectFromThstream.1.toenableserialization,aclassMustimustimplementTheSerializableizableface.2.UseObjectObjectObjectObjectOutputputputputputtreamToserialializeanobectizeanobectementeabectenobexpent,savin

AwhileloopinJavarepeatedlyexecutescodeaslongastheconditionistrue;2.Initializeacontrolvariablebeforetheloop;3.Definetheloopconditionusingabooleanexpression;4.Updatethecontrolvariableinsidethelooptopreventinfinitelooping;5.Useexampleslikeprintingnumber

NumPy是Python中进行科学计算的核心库,擅长处理线性代数运算,提供高效的ndarray数组和numpy.linalg模块中的函数。1.使用np.linalg.solve(A,b)可求解线性方程组Ax=b,得到解向量x;2.矩阵转置通过A.T实现;3.矩阵乘法可用np.dot(A,B)或A@B;4.矩阵逆通过np.linalg.inv(A)计算,需确保矩阵可逆;5.行列式由np.linalg.det(A)给出;6.特征值与特征向量通过np.linalg.eig(A)求得,特征向量已归一化;
