(给ImportNew加星标,提高Java技能)
前言
日期时间在开发中是非常常见的需求,尤其是在处理与时间相关的业务逻辑时,我们需要对日期时间进行格式化、比较等操作。在 Java 中,我们可以使用 SimpleDateFormat 类来方便地进行日期时间的格式化和解析操作。
本文将介绍 SimpleDateFormat 类的高深用法,旨在让读者更好地掌握该类的用法,让代码更加简洁。
SimpleDateFormat 适用于对日期进行格式化和解析的场景,如在日志记录、数据库操作、电子商务等领域中都有应用。例如,可以将时间戳转换为指定格式的日期字符串,也可以将日期字符串解析为对应的日期对象。但要注意,由于 SimpleDateFormat 线程不安全,需要在多线程环境中使用时进行同步处理,或者使用线程安全的替代品,如 Joda-Time 库中的 DateTimeFormatter。
public SimpleDateFormat(String pattern)
public SimpleDateFormat(String pattern, Locale locale)
package com.demo.javase.day53;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* @author bug菌
* @date 2023/10/17 19:17
*/
public class SimpleDateFormatTest {
//格式化日期时间
public static void testFormat(){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateStr = sdf.format(new Date());
System.out.println(dateStr);
}
public static void main(String[] args) {
testFormat();
}
}
2023-10-17 19:21:45
SimpleDateFormat 类的 parse() 方法可以将特定格式的字符串解析成 Date 对象。例如:
//解析日期时间
public static void testParse() throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date = sdf.parse("2023-10-17");
System.out.println(date);
}
public static void main(String[] args) throws ParseException {
testParse();
}
上述代码将字符串"2021-08-01"解析成 Date 对象后输出。输出结果如下所示:
Tue Oct 17 00:00:00 CST 2023
执行结果截图如下:
SimpleDateFormat 类的 setTimeZone() 方法可以设置时区。例如:
//设置区时
public static void testSetTimeZone(){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
sdf.setTimeZone(TimeZone.getTimeZone("GMT+8"));
String dateStr = sdf.format(new Date());
System.out.println(dateStr);
}
public static void main(String[] args) throws ParseException {
testSetTimeZone();
}
上述代码设置时区为 GMT+8 后将当前时间格式化为"yyyy-MM-dd HH:mm:ss"的格式输出。输出结果如下所示:
2023-10-17 19:25:43
执行结果截图如下:
//转义字符
public static void testSimpleDateFormat(){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd 'at' HH:mm:ss");
String dateStr = sdf.format(new Date());
System.out.println(dateStr);
}
public static void main(String[] args) throws ParseException {
testSimpleDateFormat();
}
2023-10-17 at 19:27:24
//数字格式化
public static void testSimpleDateFormat_1(){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
String dateStr = sdf.format(new Date());
System.out.println(dateStr);
}
public static void main(String[] args) throws ParseException {
testSimpleDateFormat_1();
}
2023-10-17 19:28:31.478
//格式化模式
public static void testSimpleDateFormat_2() {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd E HH:mm:ss");
String dateStr = sdf.format(new Date());
System.out.println(dateStr);
}
public static void main(String[] args) throws ParseException {
testSimpleDateFormat_2();
}
2023-10-17 星期二 19:29:42
package com.demo.javase.day53;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimeZone;
/**
* @author bug菌
* @date 2023/10/17 19:17
*/
public class SimpleDateFormatDemo {
public static void main(String[] args) throws Exception {
// 格式化日期时间
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateStr1 = sdf1.format(new Date());
System.out.println(dateStr1);
// 解析日期时间
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd");
Date date2 = sdf2.parse("2023-10-17");
System.out.println(date2);
// 设置时区
SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
sdf3.setTimeZone(TimeZone.getTimeZone("GMT+8"));
String dateStr3 = sdf3.format(new Date());
System.out.println(dateStr3);
// 转义字符
SimpleDateFormat sdf4 = new SimpleDateFormat("yyyy-MM-dd 'at' HH:mm:ss");
String dateStr4 = sdf4.format(new Date());
System.out.println(dateStr4);
// 数字格式化
SimpleDateFormat sdf5 = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss.SSS");
String dateStr5 = sdf5.format(new Date());
System.out.println(dateStr5);
// 格式化模式
SimpleDateFormat sdf6 = new SimpleDateFormat("yyyy-MM-dd E HH:mm:ss");
String dateStr6 = sdf6.format(new Date());
System.out.println(dateStr6);
}
}
2023-10-17 19:31:16
Tue Oct 17 00:00:00 CST 2023
2023-10-17 19:31:16
2023-10-17 at 19:31:16
2023/10/17 19:31:16.783
2023-10-17 星期二 19:31:16
本文向读者介绍了 SimpleDateFormat 类的概述和常见用法,以及一些高深用法。通过学习本文,读者可以更好地掌握 SimpleDateFormat 类的用法,让代码更加简洁。
附录源码
如上涉及所有源码均已上传同步在 Gitee:
https://gitee.com/bugjun01/snowball-learning-java
总的来说,本文介绍了 Java 中常用的日期格式化和解析类 SimpleDateFormat 的概述、常见用法和高深用法,以及使用该类的测试用例和代码实现。其中,常见用法包括格式化日期时间、解析日期时间和设置时区,而高深用法则包括转义字符、数字格式化和格式化模式等。
此外,本文还提到了 SimpleDateFormat 的优缺点和应用场景。需要注意的是,由于 SimpleDateFormat 是线程不安全的类,在多线程环境中需要进行同步处理,或者使用线程安全的替代品。通过学习本文,读者可以更好地掌握 SimpleDateFormat 类的用法,进而更加灵活地进行日期时间的处理。
转自:bug菌 / 华为云社区,
链接:blog.csdn.net/devcloud/article/details/133931981
- EOF -
推荐阅读 点击标题可跳转2、SimpleDateFormat 线程安全问题的六种解决方案
3、MySQL 由于 Java 日期 LocalDateTime 数据精度引发的线上问题
看完本文有收获?请转发分享给更多人
关注「ImportNew」,提升Java技能
点赞和在看就是最大的支持❤️