java时间类使用
概述:java时间类有六大类,分别是
java.util.Date
java.sql.Date
java.sql.Time
java.sql.Timestamp
java.text.SimpleDateFormat
java.util.Calendar
六大类介绍
一、java.util.Date
该类使用频率较高,精确度到毫秒
1. 创建对象及获取对象信息、格式输出
// 导入类
// import java.text.SimpleDateFormat;
// import java.util.Date;
// 1.生成当前日期
Date date = new Date();
System.out.println("date: "+date); // 输出结果 date: Sun May 09 23:35:09 CST 2021
// 2.生成指定日期 例如:生成2021年1月1日 Date(int year, int month, int day) year需减1900,month需减1
Date dateDay = new Date(2021-1900,1-1,1);
System.out.println("dateDay: "+dateDay);
// 3.生成指定日期 例如:生成2021年1月1日 或者(new Date(yyyy,MM,dd);)
Date dateDay2 = new Date("2021/1/1");
System.out.println("dateDay2: "+dateDay2);
// 4.生成指定日期 例如:生成2021年1月1日14小时30分30秒
Date dateDay3 = new Date("2021/1/1 14:30:30");
System.out.println("dateDay3: "+dateDay3);
// 5.获取data信息
Date dateGetMes = new Date("2021/1/1 14:30:30");
// 获取年份
int year = dateGetMes.getYear()+1900;
System.out.println("year: "+year);
// 获取月份
int month = dateGetMes.getMonth() + 1;
System.out.println("month: "+month);
// 获取日期 getDate()
// 获取小时 getHours()
// 获取分钟 getMinutes()
// 获取秒 getSeconds()
// 6.格式化输出
SimpleDateFormat spf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
Date dateForm = new Date("2021/1/1 14:30:30");
String format = spf.format(dateForm);
System.out.println("format: "+format); // 输出结果 format: 2021-01-01 14:30:30 000
二、java.sql.Date
/**
* java.sql.Date
* java.sql.Date是java.util.Date的子类,java.sql.Date只包含年月日信息
* java.sql.Date用于数据库中字段的保存和读取
*/
public class javaSqlDate {
public static void main(String[] args) {
// 1.生成当前日期
long time = System.currentTimeMillis(); // 当前时间毫秒数
java.sql.Date date = new java.sql.Date(time);
System.out.println(date); // 输出结果:2021-08-04
// 2. 生成特定时间。可生成特定时间的date,获取date的毫秒数
}
}
三、java.sql.Time
import java.sql.Date;
import java.sql.Time;
/**
* java.sql.Time 只有时分秒的数据
*/
public class javaSqlTime {
public static void main(String[] args) {
// 1. 生成当前时间
long hm = System.currentTimeMillis(); // 当前时间毫秒数
java.sql.Time time = new Time(hm);
System.out.println("time:"+time); // 输出结果:time:15:19:10
// 2. 生成指定时间
// 初始化Time time= new Time(10000);数字代表毫秒数,当Time time= new Time(0)时,表示的时间是08:00:00;所以new Time(10000)表示在08:00:00的基础上加了10秒
// 可以先生成指定的Date时间,再获取毫秒生成java.sql.time
java.sql.Time time1 = new Time(0);
time1.setHours(9);
time1.setMinutes(10);
time1.setSeconds(50);
System.out.println("time1:"+time1); // 输出结果:time1:09:10:50
}
}
四、java.sql.Timestamp
import java.sql.Timestamp;
/**
* java.sql.Timestamp 日期格式为:年月日时分秒纳秒(毫微秒)
*/
public class javaSqlTimestamp {
public static void main(String[] args) {
// 1.生成当前日期
Timestamp time = new Timestamp(System.currentTimeMillis());
System.out.println("time:"+time); // 输出结果:time:2021-08-04 15:33:57.651
// 2. 生成指定的日期
String tsStr = "2021-8-04 11:49:45";
Timestamp time2 = Timestamp.valueOf(tsStr);
System.out.println("time2:"+time2); // 输出结果:time2:2021-08-04 11:49:45.0
}
}
五、java.text.SimpleDateFormat
package com.javaDate;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* SimpleDateFormat 格式化时间
*/
public class simpleDateFormat {
public static void main(String[] args) {
// 1.date类型格式化字符串
Date date = new Date();
SimpleDateFormat format0 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String time = format0.format(date);
System.out.println("time1:" + time); // 输出结果:time1:2021-08-04 15:58:39
SimpleDateFormat format1 = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
String time2 = format1.format(date);
System.out.println("time2:" + time2); // 输出结果:time2:2021年08月04日 15时58分39秒
/*
A—Z,a—z代表的意思
yyyy:年
MM:月
dd:日
hh:1~12小时制(1-12)
HH:24小时制(0-23)
mm:分
ss:秒
S:毫秒
E:星期几
D:一年中的第几天
F:一月中的第几个星期(会把这个月总共过的天数除以7)
w:一年中的第几个星期
W:一月中的第几星期(会根据实际情况来算)
a:上下午标识
k:和HH差不多,表示一天24小时制(1-24)。
K:和hh差不多,表示一天12小时制(0-11)。
z:表示时区
*/
// 2.格式的时间字符串转成时间类型
Date date2 = new Date();
SimpleDateFormat format2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateStr = "2022-11-05 16:30:00";
date2 = format2.parse(dateStr);
System.out.println("date2:" + date2); // 输出结果:date2:Sat Nov 05 16:30:00 CST 2022
Date date3 = new Date();
SimpleDateFormat format3 = new SimpleDateFormat("yyyyMMdd HH:mm:ss");
String dateStr3 = "20221004 16:30:00";
date3 = format3.parse(dateStr3);
System.out.println("date3:" + date3); // 输出结果:date3:Tue Oct 04 16:30:00 CST 2022
}
}
六、java.util.Calendar
package com.javaDate;
import java.util.Calendar;
/**
* Calendar Java官方推荐使用Calendar来替换Date的使用。
*/
public class calendar {
public static void main(String[] args) {
// 1.生成当前日期
Calendar c = Calendar.getInstance();
System.out.println("nowdate:"+c.getTime()); // 输出结果:nowdate:Tue Aug 03 17:32:07 CST 2021
// 2.生成指定日期 例如:生成2021年2月12日
Calendar cal = Calendar.getInstance();
// 月份下标从0开始赋值月份要-1
// 时分秒不赋值默认取当前时间
cal.set(2021, 1, 12);
System.out.println("cal:"+cal.getTime()); // 输出结果:cal:Fri Feb 12 17:35:27 CST 2021
// 3.生成指定日期 例如:生成2021年2月12日23时59分59秒
Calendar cal2 = Calendar.getInstance();
// 月份下标从0开始赋值月份要-1
cal2.set(2021, 1, 12, 23, 59, 59);
System.out.println("cal2:"+cal2.getTime()); // 输出结果:cal2:Fri Feb 12 23:59:59 CST 2021
// 3.1生成指定日期 单个字段设置 例如:生成2021年5月10日10时59分59秒
Calendar cal3_1 = Calendar.getInstance();
cal3_1.set(Calendar.YEAR, 2021);
cal3_1.set(Calendar.MONTH, Calendar.OCTOBER);
cal3_1.set(Calendar.DAY_OF_MONTH, 10);
cal3_1.set(Calendar.HOUR_OF_DAY, 10);
cal3_1.set(Calendar.MINUTE, 59);
cal3_1.set(Calendar.SECOND, 59);
System.out.println("cal3_1:"+cal3_1.getTime()); // 输出结果:cal3_1:Sun Oct 10 10:59:59 CST 2021
// 4.获取data信息
Calendar cal3 = Calendar.getInstance();
cal3.set(2021, 1, 12, 23, 59, 59);
// 获取年份、月份、天等信息
System.out.println("年:" + cal3.get(Calendar.YEAR));
System.out.println("月:" + (cal3.get(Calendar.MONTH) + 1));
System.out.println("日:" + cal3.get(Calendar.DAY_OF_MONTH));
System.out.println("时:" + cal3.get(Calendar.HOUR_OF_DAY));
System.out.println("分:" + cal3.get(Calendar.MINUTE));
System.out.println("秒:" + cal3.get(Calendar.SECOND));
/*
输出结果:
年:2021
月:2
日:12
时:23
分:59
秒:59
*/
// 5.格式化输出
/*
使用getTime()方法获得Date对象,对Date对象进行格式化输出
*/
// 6.时间操作
// 6.1 时间加一秒
Calendar cal_min = Calendar.getInstance();
cal_min.set(2021, 7, 8, 23, 59, 59);
System.out.println("cal_min"+cal_min.getTime()); // 输出结果:cal_minSun Aug 08 23:59:59 CST 2021
cal_min.add(Calendar.SECOND, 1);
System.out.println("cal_min:"+cal_min.getTime()); // 输出结果:cal_min:Mon Aug 09 00:00:00 CST 2021
// 6.2 时间加1月
Calendar cal_month = Calendar.getInstance();
cal_month.set(2021, 7, 8, 23, 59, 59);
System.out.println("cal_month"+cal_month.getTime()); // 输出结果:cal_monthSun Aug 08 23:59:59 CST 2021
cal_month.add(Calendar.SECOND, 1);
System.out.println("cal_month:"+cal_month.getTime()); // 输出结果:cal_month:Mon Aug 09 00:00:00 CST 2021
// 7. 获取本月的最小天数
Calendar cal4 = Calendar.getInstance();
cal4.set(2021, 1, 8, 23, 59, 59);
int minDay = cal4.getActualMinimum(Calendar.MONTH);
System.out.println("minDay"+minDay);
}
}
各时间类型之间的转化
package com.javaDate;
import java.util.Calendar;
import java.util.Date;
/**
* 不同类型日期之前的转化
*/
public class convert {
public static void main(String[] args) {
// 1. Calendar转化为Date
Calendar cal= Calendar.getInstance();
Date date=cal.getTime();
// 2. Date转化为Calendar
Date date2=new Date();
Calendar cal2=Calendar.getInstance();
cal2.setTime(date2);
// 3. java.sql.Date转java.util.Date
long time = System.currentTimeMillis();
System.out.println("time:"+time); // 输出结果:time:1628060544777
java.sql.Date sdate = new java.sql.Date(time);
java.util.Date udate = sdate; // 这是上转型,会自动转换
System.out.println("udate gettime:"+udate.getTime()); // 输出结果:udate gettime:1628060544777
// 4. java.util.Date转java.sql.Date 以毫秒转化
// 转换后的毫秒数是一样的
java.util.Date udate2 = new java.util.Date();
System.out.println("udate2:"+udate2); // 输出结果:udate2:Wed Aug 04 14:59:01 CST 2021
System.out.println("udate2 gettime:"+udate2.getTime()); // 输出结果:udate2 gettime:1628060422241
java.sql.Date sdate2 = new java.sql.Date(udate2.getTime());
System.out.println("sdate2:"+sdate2); // 输出结果:sdate2:2021-08-04
System.out.println("sdate2 gettime:"+sdate2.getTime()); // 输出结果:sdate2 gettime:1628060422241
// 5. java.util.Date转java.sql.Timestamp
Date date3 = new Date("2021/1/1");
Timestamp timestamp3 = new Timestamp(date3.getTime());
System.out.println("timestamp3:" + timestamp3); // 输出结果:timestamp3:2021-01-01 00:00:00.0
Date date4 = new Date(timestamp3.getTime());
System.out.println("date4:" + date4); // 输出结果:date4:Fri Jan 01 00:00:00 CST 2021
}
}