Date
1.获取时间毫秒数
@Test
//获取时间毫秒数
public void test00(){
//1 系统类
long millis = System.currentTimeMillis();
System.out.println(millis);
// 2 日期对象
Date date = new Date();
long time = date.getTime();
System.out.println(time);
//标准时间 UTC GMT
//1900-01-01 00:00:00
//1970-01-01 00:00:00
}
输出结果为
1649944805490
1649944805490
2. Date对象获取时间年 月 日 时 分 秒 周一到周日
@Test
public void test01(){
//日期字符串
StringBuilder dateText = new StringBuilder();
//获取日期对象
Date date = new Date();
// 年 月 日 时 分 秒 星期
//getYear()从1900年开始
int year = date.getYear() + 1900;
dateText.append(year + "年");
//获取月
int month = date.getMonth() + 1;
dateText.append(month < 10 ? "0" + month + "月" : month + "月");
//获取日
int dayOfMonth = date.getDate();
dateText.append(dayOfMonth < 10 ? "0" + month + "日" : dayOfMonth + "日 ");
//获取时
int hours = date.getHours();
dateText.append(hours < 10 ? " 0" + hours + "时" : + hours + "时");
//获取分
int minutes = date.getMinutes();
dateText.append(minutes < 10 ? "0" + minutes + "分" : minutes + "分");
//获取秒
int seconds = date.getSeconds();
dateText.append(seconds < 10 ? "0" + seconds + "秒" : seconds + "秒 ");
//获取星期
int dayOfWeek = date.getDay();
String weekDay = "星期";
switch (dayOfWeek) {
case 1 -> weekDay += "一";
case 2 -> weekDay += "二";
case 3 -> weekDay += "三";
case 4 -> weekDay += "四";
case 5 -> weekDay += "五";
case 6 -> weekDay += "六";
default -> weekDay += "日";
}
dateText.append(weekDay);
System.out.println(dateText);
}
输出结果为
2022年04月14日 22时01分40秒 星期四
3.Date对象获取日期所有数据
@Test
public void test02(){
Date date = new Date();
System.out.println(date);
//实例化一个时间字符串格式对象 并传入时间字符串模板
SimpleDateFormat dateFormat = new SimpleDateFormat("yyy-MM-dd HH:mm:ss");
//将日期对象根据之前的时间字符串模板格式化为时间字符串
String format = dateFormat.format(date);
System.out.println(format);
String source = "1983-11-22 20:30:00";
try {
Date parse = dateFormat.parse(source);
System.out.println(parse);
} catch (ParseException e) {
e.printStackTrace();
}
}
输出结果为
Thu Apr 14 22:11:20 CST 2022
2022-04-14 22:11:20
Tue Nov 22 20:30:00 CST 1983
4.日期比较
@Test
//日期比较
public void test03() {
//实例化一个时间字符串格式对象 并传入时间字符串模板
SimpleDateFormat dateFormat = new SimpleDateFormat("yyy-MM-dd HH:mm:ss");
String text01 = "1983-11-22 20:30:00";
String text02 = "1988-01-02 20:30:00";
try {
Date date01 = dateFormat.parse(text01);
Date date02 = dateFormat.parse(text02);
System.out.println(date01.before(date02));
System.out.println(date02.after(date01));
} catch (ParseException e) {
e.printStackTrace();
}
}
输出结果为
true
true
5.将当前系统默认时区转换为格林威治时区
@Test
//将当前系统默认时区转换为格林威治时区
public void test04(){
//日期对象
Date date = new Date();
System.out.println(date);
String gmtString = date.toGMTString();
System.out.println(gmtString);
}
输出结果为
Thu Apr 14 22:14:46 CST 2022
14 Apr 2022 14:14:46 GMT
6.时区转换
@Test
//时区转换
public void test05(){
//输出当前系统默认时区
System.out.println(TimeZone.getDefault());
//定义时间字符串格式化模板
SimpleDateFormat tokyoSdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//格式化的时候设置时区
tokyoSdf.setTimeZone(TimeZone.getTimeZone("Asia/Tokyo"));
//获取当前时间对象
Date tokyoDate = new Date();
//将当前时间对象使用定义好的时间字符串模板格式化
String tokyoDateText = tokyoSdf.format(tokyoDate);
System.out.println(tokyoDateText);
}
输出结果为
2022-04-14 23:16:11
7.将时间毫秒数转换为Date日期
@Test
//将时间毫秒数转换为date日期
public void test06(){
long time = 1649941016620L;
// time -= 1000*60*60*24;
Date date = new Date();
System.out.println(date);
SimpleDateFormat dateFormat = new SimpleDateFormat("yyy-MM-dd HH:mm:ss");
dateFormat.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
String format = dateFormat.format(date);
System.out.println(format);
}
输出结果为
Thu Apr 14 22:17:49 CST 2022
2022-04-14 22:17:49
8.日期工具类封装
首先声明三个属性
/**
* 默认时区
*/
private final static String timeZone = "Asia/Shanghai";
/**
* 默认时间字符串模板
*/
private final static String pattern = "yyy-MM-dd HH:mm:ss";
. 没有时区
/**
* 将日期对象格式化为字符串
* @param date Date对象
* @param pattern 日期格式化字符串模板
* @return Date对象格式化后的日期字符串
*/
public static String format(Date date, String pattern){
return format(date,timeZone,pattern);
}
@Test
public void format() {
System.out.println (BaseDateUtil.format(new Date(), "yyy-MM-dd HH:mm:ss"));
}
输出结果为
2022-04-14 22:59:57
. 没有时区和模板
/**
* 将日期对象格式化为字符串
* @param date Date对象
* @return Date对象格式化后的日期字符串
*/
public static String format(Date date){
return format(date,timeZone,pattern);
}
@Test
public void format() {
System.out.println (BaseDateUtil.format(new Date()));
}
输出结果为
2022-04-14 22:59:57
. 将日期字符串解析为日期对象
/**
* 将日期字符串解析为日期对象
* @param text 日期字符串
* @param timeZone 时区
* @param patten 日期格式化字符串模板
* @return 日期字符串解析后日期对象
* @throws ParseException
*/
public static Date parse(String text, String timeZone, String patten) throws ParseException {
SimpleDateFormat dateFormat = new SimpleDateFormat(pattern);
dateFormat.setTimeZone(TimeZone.getTimeZone(timeZone));
return dateFormat.parse(text);
}
@Test
public void parse() {
try {
System.out.println (BaseDateUtil.parse("2022-04-14 22:39:09", "Asia/Shanghai", "yyy-MM-dd HH:mm:ss"));
} catch (ParseException e) {
e.printStackTrace();
}
}
输出结果为
Thu Apr 14 22:39:09 CST 2022
.没有时区
/**
* 将日期字符串解析为日期对象
* @param text 日期字符串
* @param patten 日期格式化字符串模板
* @return 日期字符串解析后日期对象
* @throws ParseException
*/
public static Date parse(String text, String patten) throws ParseException {
return parse(text,timeZone,patten);
}
@Test
public void parse() {
try {
System.out.println (BaseDateUtil.parse("2022-04-14 22:39:09", "yyy-MM-dd HH:mm:ss"));
} catch (ParseException e) {
e.printStackTrace();
}
}
输出结果为
Thu Apr 14 22:39:09 CST 2022
.没有时区和模板
/**
* 将日期字符串解析为日期对象
* @param text 日期字符串
* @return 日期字符串解析后日期对象
* @throws ParseException
*/
public static Date parse(String text) throws ParseException {
return parse(text,timeZone,pattern);
}
@Test
public void parse() {
try {
System.out.println (BaseDateUtil.parse("2022-04-14 22:39:09"));
} catch (ParseException e) {
e.printStackTrace();
}
}
输出结果为
Thu Apr 14 22:39:09 CST 2022