Java SimpleDateFormat类和DateTimeFormatter类用于时间的格式化和解析
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
SimpleDateFormat类
简介
java.text.SimpleDateFormat
是日期/时间格式化类我们通过这个类可以帮我们完成日期和文本之间的转换,也就是可以在Date对象与String对象之间进行来回转换。
- 格式化按照指定的格式把Date对象转换为String对象。
- 解析按照指定的格式把String对象转换为Date对象。
构造方法
由于DateFormat为抽象类不能直接使用所以需要常用的子类
java.text.SimpleDateFormat
。这个类需要一个模式格式来指定格式化或解析的标准。构造方法为public SimpleDateFormat(String pattern)
用给定的模式和默认语言环境的日期格式符号构造SimpleDateFormat。参数pattern是一个字符串代表日期时间的自定义格式。
格式规则:
常用的格式规则为
标识字母区分大小写 | 含义 |
---|---|
y | 年 |
M | 月 |
d | 日 |
H | 时 |
m | 分 |
s | 秒 |
备注更详细的格式规则可以参考SimpleDateFormat类的API文档。
常用方法
-
public String format(Date date)
将Date对象格式化为字符串。 -
public Date parse(String source)
将字符串解析为Date对象。
代码演示
package com.itheima.a01jdk7datedemo;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class A03_SimpleDateFormatDemo1 {
public static void main(String[] args) throws ParseException {
/*
public simpleDateFormat() 默认格式
public simpleDateFormat(String pattern) 指定格式
public final string format(Date date) 格式化(日期对象 ->字符串)
public Date parse(string source) 解析(字符串 ->日期对象)
*/
//1.定义一个字符串表示时间
String str = "2023-11-11 11:11:11";
//2.利用空参构造创建simpleDateFormat对象
// 细节:
//创建对象的格式要跟字符串的格式完全一致
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = sdf.parse(str);
//3.打印结果
System.out.println(date.getTime());//1699672271000
}
private static void method1() {
//1.利用空参构造创建simpleDateFormat对象默认格式
SimpleDateFormat sdf1 = new SimpleDateFormat();
Date d1 = new Date(0L);//0毫秒表示时间原点值1970年1月1日0点0分0秒
String str1 = sdf1.format(d1);
System.out.println(str1);//1970/1/1 上午8:00
//2.利用带参构造创建simpleDateFormat对象指定格式
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy年MM月dd日HH:mm:ss");
String str2 = sdf2.format(d1);
System.out.println(str2);//1970年01月01日 08:00:00
}
}
DateTimeFormatter类(JDK8)
代码演示:
/*
static DateTimeFormatter ofPattern(格式) 获取格式对象
String format(时间对象) 按照指定方式格式化
*/
//获取时间对象
//static Instant now() 获取当前时间的Instant对象(标准时间)
//ZonedDateTime atZone(ZoneIdzone) 指定时区
//static Zoneld of(string zoneld) 获取一个指定时区
ZonedDateTime time = Instant.now().atZone(ZoneId.of("Asia/Shanghai"));
// 解析/格式化器
DateTimeFormatter dtf1=DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm;ss EE a");
// 格式化
System.out.println(dtf1.format(time));