一.java.util.Date
public static void main(String[] args) {
Date d=new Date();
System.out.println(d);//Sun Nov 01 13:24:39 CST 2020
System.out.println(d.toString());//Sun Nov 01 13:24:39 CST 2020
System.out.println(d.toGMTString());//过时方法,不建议使用,1 Nov 2020 05:24:39 GMT
System.out.println(d.toLocaleString());//2020-11-1 13:24:3
System.out.println(d.getYear());//120
System.out.println(d.getMonth());//10
System.out.println(d.getTime());//1604208279894
System.out.println(System.currentTimeMillis());//1604208279972
//1.静态,可以用类名.方法名直接调用
//2.作用:衡量算法所用的时间
long startTime = System.currentTimeMillis();
for(int i=0;i<10000;i++){
System.out.println(i);
}
long endTime=System.currentTimeMillis();
}
二、.java.util.Date和java.sql.Date
1.区别
java.until.Date:年月日 时分秒
java.sql.Date:年月日
2.联系
java.sql.Date extends java.util.Date
(3)转换
until----->sql
java.util.Date date = new java.sql.Date(1604208279972L); //创建util.Date的对象
//方法一:向下转型
Date date1=(Date)date;
//方法二:利用构造器
Date date2=new Date(date.getTime());
sql---->util
//sql---->util
java.util.Date date3=d;
String---->sql
//string--->sqi.Date
Date date4=Date.valueOf("2019-11-1");
string—>util
a.分解
String—>sql
正常运行
//分解string-->sql.Date
java.sql.Date date=java.sql.Date.valueOf("2020-11-1");
错误
java.sql.Date date=java.sql.Date.valueOf("2020/11/1");
sql—>util
//sql.Date--->util.Date
java.util.Date date1=date;
b.直接转换(DateFormat())
日期格式
日期转换
public abstract class DateFormat extends Format//抽象类不可以创建对象
标准格式化
DateFormat df=new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
String—>Date 【parse 方法】
try {
Date d=df.parse("2020/11/01 14:50:23");
System.out.println(d);
} catch (ParseException e) {
e.printStackTrace();
}
Date—>String 【format 方法】
//date-->String
//自定义格式
String format = df.format(new Date());
System.out.println(format);
//非自定义格式
Date date=new Date();
System.out.println(date.toString());
System.out.println(date.toLocaleString());
System.out.println(date.toGMTString());
三、Calender
1.创建对象
//Calendar是一个抽象类不能直接创建对象
//Calendar cal=new Calendar();
// GregorianCalendar extends Calendar是一个抽象类
Calendar cal=new GregorianCalendar();
Calendar cal2=Calendar.getInstance();
System.out.println(cal);
//outjava.util.GregorianCalendar[time=1604231355312,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=29,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2020,MONTH=10,WEEK_OF_YEAR=45,WEEK_OF_MONTH=1,DAY_OF_MONTH=1,DAY_OF_YEAR=306,DAY_OF_WEEK=1,DAY_OF_WEEK_IN_MONTH=1,AM_PM=1,HOUR=7,HOUR_OF_DAY=19,MINUTE=49,SECOND=15,MILLISECOND=312,ZONE_OFFSET=28800000,DST_OFFSET=0]
2.常用方法
get方法,传入参数:calender中定义的常量
System.out.println(cal.get(Calendar.YEAR)); System.out.println(cal.get(Calendar.MONTH));
System.out.println(cal.get(Calendar.DATE));
System.out.println(cal.get(Calendar.DAY_OF_WEEK));
System.out.println(cal.getActualMaximum(Calendar.DATE));//获取当月日期最大的天数
System.out.println(cal.getActualMinimum(Calendar.DATE));//获取当月日期的最小天数
输出:
set方法
//set方法
cal.set(Calendar.DATE,23);
cal.set(Calendar.MONTH,10);
cal.set(Calendar.YEAR,2020);
System.out.println(cal);
//java.util.GregorianCalendar[time=?,areFieldsSet=false,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=29,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2020,MONTH=10,WEEK_OF_YEAR=45,WEEK_OF_MONTH=1,DAY_OF_MONTH=23,DAY_OF_YEAR=306,DAY_OF_WEEK=1,DAY_OF_WEEK_IN_MONTH=1,AM_PM=1,HOUR=7,HOUR_OF_DAY=19,MINUTE=49,SECOND=15,MILLISECOND=312,ZONE_OFFSET=28800000,DST_OFFSET=0]
3.转换String—>calendar
//String--->Calendar
//string--->sql.date
java.sql.Date date=java.sql.Date.valueOf("2020-11-1");
//sql.date--->calendar
cal.setTime(date);
System.out.println(cal);
四、打印日历
public static void main(String[] args) {
//String--->calendar
Scanner sc=new Scanner(System.in);
System.out.println("请输入你想要查看的日期:(提示:请按照例如2010-11-1格式书写)");
String strDate = sc.next();
//System.out.println(strDate);
//String-->Calendar
//String-->Date
java.sql.Date date=java.sql.Date.valueOf(strDate);
//date-->calendar
Calendar cal=Calendar.getInstance();
cal.setTime(date);
//星期提示
System.out.println("日\t一\t二\t三\t四\t五\t六");
//获取本月的最大天数
int maxDay = cal.getActualMaximum(Calendar.DATE);
//定义一个计数器
int count=0;
//获取现在为几号
int nowDay = cal.get(Calendar.DATE);
//将日期调为该月的第一天
cal.set(Calendar.DATE,1);
//获取这个月的一号时一周的第几天
int number = cal.get(Calendar.DAY_OF_WEEK);
//前面的空格数
int day=number-1;
//打印空格
for (int i = 0; i <day ; i++) {
System.out.print("\t");
}
count=count+day;
//从一号开始到maxDay遍历
for (int i = 1; i <= maxDay ; i++) {
if(i==nowDay){
System.out.print(i+"*"+"\t");
}else{
System.out.print(i+"\t");
}
count++;
if(count%7==0){
System.out.println();
}
}
}
五、JDK1.8
//1.完成实例化
//方法1:now();获取当前的日期,时间,日期时间
public static void main(String[] args) {
LocalDate localDate=LocalDate.now();
System.out.println(localDate);
LocalTime localTime=LocalTime.now();
System.out.println(localTime);
LocalDateTime localDateTime=LocalDateTime.now();
System.out.println(localDateTime);
//方法2:of()设置指定的日期,时间,日期时间
LocalDate of = localDate.of(2020, 5, 20);
LocalTime of1 = localTime.of(20, 13, 56);
LocalDateTime of2 = localDateTime.of(2020, 12, 23, 20, 23, 34);
System.out.println(of);
System.out.println(of1);
System.out.println(of2);
//localDateTime使用较多
System.out.println(localDateTime.getYear());
System.out.println(localDateTime.getMonth());
System.out.println(localDateTime.getDayOfMonth());
System.out.println(localDateTime.getMonthValue());//11
System.out.println(localDateTime.getDayOfYear());
localDateTime.getHour();
// 一系列常用的with方法
LocalDateTime localDateTime1 = localDateTime.withMonth(11);
localDateTime.withHour(21);
System.out.println(localDateTime);
System.out.println(localDateTime1);
//提供了加减操作
//加
LocalDateTime localDateTime2 = localDateTime.plusYears(23);
System.out.println(localDateTime);
System.out.println(localDateTime2);
//减
LocalDateTime localDateTime3 = localDateTime.minusDays(2);
System.out.println(localDateTime);
System.out.println(localDateTime3);
六、DateTimeFormatter
格式化类:DateTimeFormatter
public static void main(String[] args) {
//方式一:预定义标准格式
DateTimeFormatter df1=DateTimeFormatter.ISO_DATE_TIME;
//df1帮助完成localDateTime与String类型之间的转换
//localDateTime--->String
LocalDateTime now=LocalDateTime.now();
String str=df1.format(now);
System.out.println(str);
//string-->localDateTime
TemporalAccessor parse = df1.parse("2020-11-03T21:09:34.822");
System.out.println(parse);
//方式二:本地化相关格式 oflocalizedDateTime();
//参数:FormatStyle.LONG/FormatStyle.MEDIUM/FormatStyle.SHORT
//FormatStyle.LONG:2020年11月3日 下午09时24分46秒
//FormatStyle.MEDIUM:2020-11-3 21:27:41
//FormatStyle.SHORT:20-11-3 下午9:28
DateTimeFormatter df2 = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.LONG);
//LocalDateTime-->string
LocalDateTime now1 = LocalDateTime.now();
String str2 = df2.format(now1);
System.out.println(str2);
//string--->localDateTime
TemporalAccessor parse1 = df2.parse("2020年11月3日 下午09时22分33秒");
System.out.println(parse1);
//方式三:自定n义形式 ofPatter("yyyy-mm-dd hh:mm:ss")
DateTimeFormatter df3 = DateTimeFormatter.ofPattern("yyy-MM-dd hh:mm:ss");
//localDateTime-->String
LocalDateTime now2 = LocalDateTime.now();
String format = df3.format(now2);
System.out.println(format);
//String-->localDateTime
TemporalAccessor parse2 = df3.parse("2020-11-03 09:39:14");
System.out.println(parse2);