package com.zking.test;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class Test {
public static void test1() {
// 1.获取系统时间
Date date = new Date();// util包
// Tue Nov 30 09:00:24 CST 2021
System.out.println(date);// 默认显示的风格:国外
// 可以调用方法来显示常规时间
// 2021-11-30 9:02:24
System.out.println(date.toLocaleString());
// 常用的方法
// 获取当前的年份
System.out.println(date.getYear() + 1900);
// 获取当前的月份
System.out.println(date.getMonth() + 1);
// 获取当前的日
System.out.println(date.getDate());
// 获取当前的小时
System.out.println(date.getHours());
// 获取当前的分钟
System.out.println(date.getMinutes());
// 获取当前的秒
System.out.println(date.getSeconds());
// 获取当前的毫秒(距离1970年1月1日0:0:0之间的毫秒值)
System.out.println(date.getTime());// 结果 long类型
// 2021-11-30 9:09:16
// 1638234556484
// Date提供了一个可以传递毫秒值的构造函数
Date d = new Date(1638234556484L);
// 2021-11-30 9:09:16
System.out.println(d.toLocaleString());
Date d2 = new Date();
d2.setYear(2022);
System.out.println(d2.getYear());
}
public static void test2() {
// -----------------------------------
// SimpleDateFormat 日期格式转换类
// 需求:通过Date对象得到一个日期,显示为:2021年11月11日 12:12:12
// 1.实例化Date对象
Date myDate = new Date();
// 2.SimpleDateFormat创建
// 日期的规则制定:
// 年份: yyyy
// 月份: MM
// 日:dd
// 小时:hh
// 分钟: mm
// 秒: ss
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
// 3.调用转换格式的方法
String format = sdf.format(myDate);
System.out.println(format);
// Date---->String
// String---->Date
String str = "2021-11-11 12:20:20";
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
Date parse = sdf2.parse(str);// 该方法会出现异常所以使用try解决异常才能运行程序
System.out.println(parse.toLocaleString());
} catch (ParseException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
// 今日新课:日期类(Date|SimpleDateFormat|Calendar)
/**
* Date: 1.该类位于java.util包中,在sql包也存在。
* 2.父类:Object类
* 3.作用:描述时间
* 4.如何根据提供的Date类来获取时间或者设置时间
* 通过该类提供的构造函数及方法来实现
*
*/
// Calendar类:日历类,替代了Date类对象中常用的方法
Calendar c = Calendar.getInstance();
System.out.println(c);//java.util.GregorianCalendar[time=1638236478852,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=19,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2021,MONTH=10,WEEK_OF_YEAR=49,WEEK_OF_MONTH=5,DAY_OF_MONTH=30,DAY_OF_YEAR=334,DAY_OF_WEEK=3,DAY_OF_WEEK_IN_MONTH=5,AM_PM=0,HOUR=9,HOUR_OF_DAY=9,MINUTE=41,SECOND=18,MILLISECOND=852,ZONE_OFFSET=28800000,DST_OFFSET=0]
//方法
System.out.println(c.get(Calendar.YEAR));//年
System.out.println(c.get(Calendar.MONTH)+1);//月
System.out.println(c.get(Calendar.DATE));//日
System.out.println(c.get(Calendar.HOUR));//小时
System.out.println(c.get(Calendar.MINUTE));//分钟
System.out.println(c.get(Calendar.SECOND));//秒
System.out.println(c.getTimeInMillis());//毫秒值
//set
c.set(2000, 10, 20);
System.out.println(c.get(Calendar.YEAR));
System.out.println(c.get(Calendar.MONTH));
//add:根据第一个参数的类型 增加指定的年|月|日|....
c.add(Calendar.YEAR, -2);
System.out.println(c.get(Calendar.YEAR));
/**
* 问题:
* String类型的日期----》Calendar类型的日期
*
* Calendar类型的日期----》String类型的日期
*/
// 1.Calendar类型的日期----》String类型的日期
Calendar calendar = Calendar.getInstance();
//需求:先将日历类---Date
// Date d = calendar.getTime();
//2
long timeInMillis = calendar.getTimeInMillis();
Date d = new Date(timeInMillis);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String str = sdf.format(d);
System.out.println(str);
//2.String类型的日期----》Calendar类型的日期
String da = "2021-10-10";
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd");
try {
Date d2 = sdf2.parse(da);
//实例化Calendar
Calendar c2 = Calendar.getInstance();
c2.setTime(d2);
System.out.println(c2.get(Calendar.YEAR)+"年"+(c2.get(Calendar.MONTH)+1)+"月"+c2.get(Calendar.DATE)+"日");
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}