Day12_常用类
Date类
java.sql.Date:表示到年月日
java.util.Date:表示到年月日时分秒
import java.util.Date;
public class Demo03 {
public static void main(String[] args) {
Date d = new Date();
System.out.println(d.getTime());
System.out.println(System.currentTimeMillis());//常用,原因:不用创建对象,直接调用
//通过时间戳直接初始化java.sql.Date对象
java.sql.Date sqlDate= new java.sql.Date(1596611974007L);
System.out.println(sqlDate);
//String----->java.sql.Date
java.sql.Date valueOf = java.sql.Date.valueOf("2020-8-5");
System.out.println(valueOf);
//java.util.Date----->java.sql.Date
java.sql.Date sqlDate2=new java.sql.Date(new Date().getTime());
//java.sql.Date----->java.util.Date
Date date = sqlDate2;//java.sql.Date类是java.util.Date的子类。子类直接转化成父类
//java.sql包下的类:
java.sql.Time time=new java.sql.Time(1596611974007L);
System.out.println(time.toGMTString());//toGMTString()已过时,实际编程中不建议用
//时间戳更精确
java.sql.Timestamp ts = new java.sql.Timestamp(1596611974007L);
System.out.println(ts);
}
}
输出:
1596612952197
1596612952197
2020-08-05
2020-08-05
5 Aug 2020 07:19:34 GMT
2020-08-05 15:19:34.007
String类与Date类的相互转化
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Demo04 {
public static void main(String[] args) {
//日期格式类,DateFormat类是抽象类,不能直接创建对象,创建他的实
用类
DateFormat df= new SimpleDateFormat("yyyy-MM-dd hh-mm-ss");
try {
//String--->Date
Date d = df.parse("2020-8-5 15-53-56");
System.out.println(d);
} catch (ParseException e) {
e.printStackTrace();
}
//Date--->String
String str=df.format(new Date());
System.out.println(str);
}
}
输出:
Wed Aug 05 15:53:56 CST 2020
2020-08-05 03-57-05
Calendar类
Calendar类很强大,但是用的少!
import java.util.Calendar;
import java.util.Date;
public class Demo05 {
public static void main(String[] args) {
//Calendar类是抽象类,通过调用其方法来获取实例
Calendar cal=Calendar.getInstance();
//查询
System.out.println(cal.get(Calendar.DATE));
System.out.println(cal.get(Calendar.MONTH));
System.out.println(cal.get(Calendar.YEAR));
//设置
cal.set(Calendar.YEAR,2050);
System.out.println(cal.get(Calendar.YEAR));
//String--->Calendar
//String--->Date
String str="2050-2-5";
Date valueOf=java.sql.Date.valueOf(str);
//Date--->Calendar
cal.setTime(valueOf);
System.out.println(cal.get(Calendar.YEAR));
System.out.println(cal.get(Calendar.MONTH));
System.out.println(cal.get(Calendar.DATE));
}
}
输出:
//当前日期:2020-8-5
5
7//月份从0开始计算
2020
2050
2050
1//月份从0开始计算
5
可以查询日期的日历(小练习)
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Scanner;
public class calendar {
public static void main(String[] args) {
System.out.print("请输入您想要查看的日期--(格式例如:2020-8-5):");
Scanner sc = new Scanner(System.in);
String str=sc.next();
//String--->Calendar
Date valueOf= java.sql.Date.valueOf(str);
Calendar cal= new GregorianCalendar();
cal.setTime(valueOf);
//输出日历头
System.out.println("日 一 二 三 四 五 六");
//获取该月的天数
int maxDay=cal.getActualMaximum(Calendar.DATE);
//获取输入的天数
int today=cal.get(Calendar.DATE);
//将cal对象设置为该月的第一天
cal.set(Calendar.DATE,1);
//获取该月第一天是星期几
int dayOfWeek= cal.get(Calendar.DAY_OF_WEEK);
//在第一天前输出空格
for (int i = 0; i < dayOfWeek-1; i++) {
System.out.print(" ");
}
//计算输出的天数,以便按星期换行
int count=0;
count=count+dayOfWeek-1;
for (int i = 0; i < maxDay; i++) {
if(i!=today-1) {
System.out.print(i + 1 + " ");
count++;
}else{
//标记输入的日期
System.out.print(i + 1 + "* ");
count++;
}
//换行
if(count%7==0){
System.out.println();
}
}
}
}
输出:(查询2030-3-4,由于markdown的编辑,出现乱码)
请输入您想要查看的日期--(格式例如:2020-8-5):2030-3-4
日 一 二 三 四 五 六
1 2
3 4* 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
枚举
枚举与switch结合应用:
- switch()放: int char byte String 枚举
- case后面只能是枚举下的实例
- 什么情况下使用枚举?值固定的时候
不能创建对象的四种情况:
-
是接口
-
抽象类
-
没有空构造器
-
构造器的用private修饰,只能在本类中创建
此时可以通过类名.方法名,类名.属性名来访问方法和属性