java的日期类有哪些?
java.util.Date(比较原始,从Java发明就已经有了)
java.util.Calendar(比较新的)(日历)
java.time.LocalDate (java 1.8 新增)(只有日期)
java.time.LOcalTime (java 1.8 新增)(只有时间)
java.time.LocalDateTime (java 1.8 新增)(日期时间都有)
java关于格式化的类有哪些?
java.text.NumberFormat
java.text.DecimalFormat
java.text.SimpleDateFormat
java.util.Date
Date d = new Date();//实例化日期对象
System.out.println(d.toLocaleString());//获取本地时间(自带格式)
System.out.println(d);//系统当前时间(不是自己想要的格式)
System.out.printf("%tF %<tT %tA %n",d)//获取时间(有规则的)
long t = d.getTime();//通过Date来获取时间戳
int year = d.getYear()+1900;//获得年份
//有哪些方法?
d.getYear();
d.getMonth();
d.getDate();
d.getHOurs();
d.getMInutes();
d.getSeconds();
d.setTime(0);
//格式化类
//java.until.Date类的 格式化类 simpleDateFormat
//格式化类帮助你格式化时间只需要把时间和格式放进去就可以了(E是周几)
SimpleDateFormat s = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
System.out.println(s.format(new Date()));
java.util.Calendar
Canlendar c = Calendar.getInstance();
System.out.printf("%tF %<tT %<tA %n",c)//2022-12-20 11:43:03
System.out.printf("%tY年%<tm月%<td日 %tT %n");
//2022年12月20日 11:43:03
System.out.println(c.getDisplayName(Calendar.MONTH,Calendar.LONG_FORMAT,Locale.CHINA));//获取中文状态下的月份:十二月 SHORT_FORMAT:12月
System.out.println(c.getDisplayName(Calendar.DAY_OF_WEEK,Calendar.LONG_FORMAT,locale.CHINA));//获取中文状态下的星期几 SHORT_FORMAT:周几
int year = c.get(Calendar.YEAR);//获取年份
int hour = c.get(Calendar.HOUR_OF_DAY);//获取本地时间的小时
long t = c.getTimeInMillis();//通过Calendar来获取时间戳
//c.get() c.set() c.add()
c.set(2000,Calendar.OCTOBER,15);//时间2000年10月15日 OCTOBER是10月
c.set(2000,10-1,15);//和上面一行一样时间2000年10月15日(月是从0开始)
c.add(Calendar.DATE,5)//加5天(也可用负号)
c.add(Calendar.MINUTE,1000);//加1000分钟
java.time.LocalDate
//只存日期,也存星期几,但是不存时间 (E:周二,L:几月,M:12月)
var d = LocalDate.now();//实例化
//d:2020-12-20 d.Year():2022
Month mm = d.getMonth();//输出月份的英文
mm.getDisplayName(TextStyle.FULL,Locale.CHINA) //把英文月份改为中文
DayOfWeek dw = d.getDayOfWeek();//输出星期几的英文
dw.getDisplayName(TextStyle.FULL,Locale.CHINA) //把英文星期几改为中文
d.plusDays(5) //5天后的日期,会返回一个新日期
d.minusDays(3) //3天前的日期,会返回一个新日期
d.plus(25,ChronoUnit.MONTHS) //25个月后的日期,会返回一个新日期
System.out.println(d.format(DateTimeFormatter.ofPattern("yyyy年MM月dd日"))); //自定义时间输出格式
long days = ChronoUnit.DAYS.between(d1,d2);//d1到d2有days天
LocalDate m = LocalDate.of(2020,1,2);
System.out.println(m);//2020-1-2
java.time.LocalTime
//本地化时间,只有时分秒...没有日期(用的不多)
var t1 = LocalTime.now();
var t2 = LocalTime.of(14,30,20);
//格式化输出
DateTimeFormatter d = DateTimeFormatter.ofPattern("HH时mm分ss秒");
System.out.println(d.format(t1));//用d格式输出t1
java.time.LocalDateTime
//相当于LocalDate + LocalTime 也相当于java.util.Date和Calendar类
var d = LocalDateTime.now(); //实例化
System.out.printf("%tY年%<tm月%<td日 %<tH:%<tM:%<tS %<tA %<tp
%s %n",d,d.getMonth().getDisplayName(TextStyle.FULL,
Locale.CHINA));
//将字符串转换为LocalDateTime
var d2 = LocalDateTime.of(2022,10,17,14,49,50);
System.out.println(d2);
System.out.println(d2.format(DateTimeFormatter.ofPattern("yyyy-MMdd HH:mm:ss")));//按照这个格式输出d2
时间戳
//时间戳1:本质上就是一个long的数字,一个数字就代表日期时间
Date d = new Date();
System.out.println(d.getTime());//时间戳 是一个long的整数
//时间戳2
System.out.println(System.currentTimeMillis());//获取系统当前时间的毫秒数
//时间戳转换成时间
long t = System.currentTimeMillis();
System.out.printf("%tF %<tT %<tA %<tp %n",t)
System.out.printf("%tF %<tT %n",0L);//1970-01-01 08:00:00
//时间戳3
Canlendar c = Calendar.getInstance();
long t = c.getTimeInMillis()