目录
import java.util.Date包和import java.sql.Date包的区别
import java.sql.Date和import java.util.Date之间的相互转换
Data
包名:import java.util.Date;
import java.util.Date;
public class Test {
public static void main(String[] args) {
Date date = new Date();
System.out.println(date);//Sun Jul 31 18:49:48 CST 2022
System.out.println(date.toString());//Sun Jul 31 18:49:48 CST 2022
System.out.println(date.toGMTString());//31 Jul 2022 10:49:48 GMT
System.out.println(date.toLocaleString());//2022-7-31 18:51:11
System.out.println(date.getYear());//显示的时间+1900为现在的年份
System.out.println(date.getMonth());//注意这里的月份在0-11之间,0表示1月
System.out.println(date.getTime());//返回在1970年1月1日0点00分00秒到现在的毫秒数
}
}
包名:import java.sql.Date;
import java.sql.Date;
public class Test1 {
public static void main(String[] args) {
//注意:里面没有提供空构造器
Date date = new Date(System.currentTimeMillis());
System.out.println(date);//2022-07-31
System.out.println(date.toGMTString());//31 Jul 2022 11:19:54 GMT
//以下相同
}
}
import java.util.Date包和import java.sql.Date包的区别
- import java.util.Date:里面提供了年月日,时分秒;import java.sql.Date:里面仅有年月日
- import java.sql.Date(子类)继承了import java.util.Date(父类)
import java.sql.Date和import java.util.Date之间的相互转换
util转sql以及String转sql
import java.sql.Date;
public class Test1 {
public static void main(String[] args) {
//util转sql
java.util.Date date =new Date(System.currentTimeMillis());//util
//向下转型
Date date3 = (Date) date;
System.out.println(date3);
//利用构造器
Date date1 = new Date(date.getTime());
System.out.println(date1);
//string类型转sql
Date date2 = Date.valueOf("2019-3-8");
System.out.println(date2);
}
}
sql转util与String转util
import java.sql.Date;
public class Test1 {
public static void main(String[] args) {
//sql转util
Date date = new Date(System.currentTimeMillis());
//父类引用指向子类对象
java.util.Date data1=date;
System.out.println(data1);
//string转util
//1.将string转sql(里面传入的字符串格式只能是下面格式)
Date date1 = Date.valueOf("2015-3-7");
//2.将sql转util
java.util.Date data11 = data1;
System.out.println(data11);
}
}
日期转换类(DateFormat)
作用:实现String与Date之间的相互转换(以自定义格式)
注意:DateFormat为抽象类,其不可以直接创建对象,我们可以用其子类SimpleDateFormat
日期格式
string转date
//日期转换
//string(任意格式)转date
DateFormat dateFormat = new SimpleDateFormat("yyyy:MM:dd HH-mm-ss");//潇洒格式
//string转date(此string格式要和定义的格式匹配,因为是以特定的格式进行解析)
Date parse = dateFormat.parse("2019:7:9 12-45-54");
//以特定的格式打印
System.out.println(parse.toLocaleString());
date转string
//date转string
DateFormat dateFormat = new SimpleDateFormat("yyyy:MM:dd HH-mm-ss");
String format = dateFormat.format(new Date());
//将当前日期以上面确定的格式转化为字符串
System.out.println(format);//2022:07:31 20-27-59
日历类(Calendar)
注意:Calendar为抽象类,其不可以直接创建对象,我们可以用其子类GregorianCalendar
创建对象
//创建对象方式
Calendar calendar = new GregorianCalendar();//方式1
Calendar instance = Calendar.getInstance();//方式2
System.out.println(calendar + "" + instance);//超长数组,信息全面
获取或改变日期信息
//获取日期信息(get方法)
Calendar calendar = new GregorianCalendar();//方式1
System.out.println(calendar.get(Calendar.YEAR));//获取年份
System.out.println(calendar.get(Calendar.MONTH));//获取月份
System.out.println(calendar.get(Calendar.DATE));//获取日
System.out.println(calendar.get(Calendar.HOUR));//获取小时
System.out.println(calendar.get(Calendar.MINUTE));//获取分钟
System.out.println(calendar.get(Calendar.SECOND));//获取秒钟
System.out.println(calendar.get(Calendar.DAY_OF_WEEK));//获取一个星期的第几天(国外周日是一星期的第一天)
System.out.println(calendar.getActualMaximum(Calendar.DATE));//得到日期的最大天数
System.out.println(calendar.getActualMinimum(Calendar.DATE));//得到日期的最小天数
//set方法,可以改变calendar的内容
calendar.set(Calendar.YEAR, 1999);
calendar.set(Calendar.MONTH, 6);
calendar.set(Calendar.DATE, 16);
System.out.println(calendar);
string与calendar的转化
Calendar calendar = new GregorianCalendar();//方式1
//string转calendar
//先转化为sql
Date date = Date.valueOf("2020-4-5");
//sql转calendar
calendar.setTime(date);
System.out.println(calendar.get(Calendar.YEAR));
System.out.println(calendar.get(Calendar.MONTH));
System.out.println(calendar.get(Calendar.DATE));
以上日期的缺陷
- 可变性:像日期、时间这样的类应该是不可变的
- 偏移性:Date中的年份是从1900开始的,而月份都是从0开始的
- 格式化:DateFormat格式化只对date有用calendar不行
本地日期时间
创建对象
//创建对象
//方法1——now()
LocalDate localDate = LocalDate.now();
System.out.println(localDate);//2022-07-31
LocalTime localtime = LocalTime.now();
System.out.println(localtime);//21:56:16.739
LocalDateTime localDateTime = LocalDateTime.now();
System.out.println(localDateTime);//2022-07-31T21:56:16.739
//方法2——of()[创建指定日期/时间对象]
LocalDate localDate1 = LocalDate.of(2012, 3, 8);
System.out.println(localDate1);//2012-03-08
LocalTime localTime = LocalTime.of(12, 35, 56);
System.out.println(localTime);//12:35:56
LocalDateTime localDateTime1 = LocalDateTime.of(2012, 3, 8, 12, 35, 56);
System.out.println(localDateTime1);//2012-03-08T12:35:56
获取或设置日期时间
//LocalDateTime用的比较多
LocalDateTime localDateTime = LocalDateTime.now();
System.out.println(localDateTime);//2022-07-31T22:7:53.808
//get方法获取
System.out.println(localDateTime.getYear());//2022
System.out.println(localDateTime.getMonth());//JULY
System.out.println(localDateTime.getMonthValue());//7
System.out.println(localDateTime.getDayOfMonth());//31
System.out.println(localDateTime.getDayOfWeek());//SUNDAY
System.out.println(localDateTime.getHour());//22
System.out.println(localDateTime.getMinute());//7
System.out.println(localDateTime.getSecond());//53
//with方法(set)方法
LocalDateTime localDateTime2 = localDateTime.withMonth(8);
System.out.println(localDateTime);//2022-07-31T22:15:07.451(以前的都没变)
System.out.println(localDateTime2);//2022-08-31T22:15:07.451
日期的加减操作
//LocalDateTime用的比较多
LocalDateTime localDateTime = LocalDateTime.now();
System.out.println(localDateTime);//2022-07-31T22:7:53.808
//提供了加减的操作
LocalDateTime localDateTime3 = localDateTime.plusMonths(4);//加月份操作
System.out.println(localDateTime3);//2022-11-30T22:17:28.808
LocalDateTime localDateTime4 = localDateTime.minusMonths(3);
System.out.println(localDateTime4);//2022-04-30T22:19:21.591
DateTimeFormat
作用:实现字符串和日期的互转
方式1:预定义标准格式
语法:
- DateTimeFormatter.ISO_LOCAL_DATE_TIME
- DateTimeFormatter.ISO_LOCAL_DATE
- DateTimeFormatter.ISO_LOCAL_TIME
localdatetime与string类型相互转化
DateTimeFormatter df1 = DateTimeFormatter.ISO_LOCAL_DATE_TIME;
//df1可以帮助我们完成localdatetime与string类型之间的转化
//localdatetime转string
LocalDateTime localDateTime = LocalDateTime.now();
String format = df1.format(localDateTime);
System.out.println(format);//2022-07-31T22:30:42.308
//string转localdatetime
TemporalAccessor parse = df1.parse("2022-07-31T22:30:42.308");
System.out.println(parse);//{},ISO resolved to 2022-07-31T22:30:42.308
方式2:本地化相关格式
语法:DateTimeFormatter.ofLocalizedDateTime(参数)
参数格式
- FormatStyle.LONG:2022年7月31日 下午10时39分58秒
- FormatStyle.MEDIUM:2022-7-31 10:39:58
- FormatStyle.SHORT:22-7-31 下午10:44
localdatetime与string类型相互转化
//localdatetime和string转化
DateTimeFormatter df2 = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.LONG);
LocalDateTime dt = LocalDateTime.now();
//localdatetime转string
String format1 = df2.format(dt);
System.out.println(format1);//2022年7月31日 下午10时39分58秒
//string转localdatetime
TemporalAccessor parse1 = df2.parse("2000年8月31日 下午10时39分47秒");
System.out.println(parse1);//{},ISO resolved to 2000-08-31T22:39:47
方式3:自定义格式。
语法:DateTimeFormatter.ofPattern("自定义格式")
localdatetime与string类型相互转化
DateTimeFormatter df3 = DateTimeFormatter.ofPattern("yyyy:MM:dd hh-mm-ss");
LocalDateTime now = LocalDateTime.now();
//string转localdatetime
String format2 = df3.format(now);
System.out.println(format2);//2022:07:31 10-54-37
//localdatetime转string
TemporalAccessor parse2 = df3.parse("2022:07:31 10-54-37");
System.out.println(parse2);