【Java】JDK8之前的时间日期API

1.System类的currentTimeMills()

返回当前时间与1970年1月1日0时0分0秒之间,以毫秒为单位的时间差,称为时间戳。

long time = System.currentTimeMills();
System.put.println(time); //1669365126193

2.java.util.Date类和java.sql.Date类

sql.Date是util.Date的子类。

java.util.Date类

(1)两个构造器的使用

public Date() { //Date()创建一个对应当前时间的Date对象
this(System.currentTimeMillis());
}
public Date(long date) { //创建指定毫秒数的Date对象
fastTime = date;
}

(2)两个方法的使用

public String toString() {} //显示当前的年月日时分秒
public long getTime() { //获取当前date对象对应的毫秒数(时间戳)
return getTimeImpl();
}

(3)java.sql.Date

对应数据库中的日期类型的变量。
① 创建java.sql.Date对象

java.sql.Date sqlDate = new java.sql.Date(8586988756878L);
System.out.println(sqlDate); //2242-02-10
java.sql.Date sqlDate2 = new java.sql.Date(new Date().getTime());
System.out.println(sqlDate2); //2022-11-28

② java.util.Date和java.sql.Date对象之间的转换

Date utilDate1 = new java.sql.Date(45676543456L); //utilDate是sqlDate的父类
java.sql.Date sqlDate1 = (java.sql.Date)utilDate1;
//使用utilDate的getTime方法
Date utilDate2 = new Date();
java.sql.Date sqlDate2 = new java.sql.Date(utilDate2.getTime());

3.java.text.SimpleDateFormat类

该类可以对日期Date类进行格式化和解析。

  • 格式化:日期 --> 字符串
  • 解析:字符串 --> 日期
//(1)默认构造器
SimpleDateFormat sdf = new SimpleDateFormat();
String stringDate = sdf.format(new Date()); //格式化
Date utilDate = sdf.parse("19-12-18 上午11:43"); //解析
//(2)按指定方式格式化和解析
//SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MMMMM.dd GGG hh:mm aaa");
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
String stringDate = sdf.format(new Date()); //格式化
//要求字符串必须是符合simpleDateFormat识别的格式(sdf的构造器参数),否则抛异常
Date utilDate3 = sdf.parse("2022-11-11 23:30:24"); //解析

(1)练习一:将字符串"2020-09-18" 转换为 java.sql.Date。
(2)练习二:从1990-01-01开始三天打渔两天晒网,求今天是打渔还是晒网?

点击查看答案
//练习一
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date = sdf.parse("2020-09-08");
java.sql.Date sqlDate = new java.sql.Date(date.getTime());
//练习二
Date date1 = sdf.parse("1990-01-01");
Date date2 = new Date();
long days = (date2.getTime()-date1.getTime())/(1000*60*60*24)+1; //除以一天的毫秒数计算总天数,间隔要+1
if (days%5==1||days%5==2||days%5==3){
System.out.println("打渔");
}else if (days%5==4||days%5==0){
System.out.println("晒网");
}

4.Calender日历类

这是一个抽象类

(1)创建实例

GregorianCalendar calendar = new GregorianCalendar(); //通过其子类创建
Calendar calendar1 = Calendar.getInstance(); //通过静态方法getInstance()创建

(2)常用方法

//get()方法
int days = calendar.get(calendar.DAY_OF_MONTH);
int years = calendar.get(calendar.DAY_OF_YEAR);
System.out.println(days); //28,这个月的第28天
System.out.println(years); //332,今年的第332天
//set()方法,设置天数
calendar.set(calendar.DAY_OF_MONTH,22);
int days1 = calendar.get(calendar.DAY_OF_MONTH);
System.out.println(days1); //22
//add()方法,添加天数,可以为负数
calendar.add(calendar.DAY_OF_MONTH,-3);
int days2 = calendar.get(calendar.DAY_OF_MONTH);
System.out.println(days2); //19

(3)calender和java.util.Date之间的转换

//calendar --> Date,上面做了set、add操作所以不一样
Date date1 = calendar.getTime();
System.out.println(date1); //Sat Nov 19 14:12:25 CST 2022
System.out.println(new Date()); //Mon Nov 28 14:16:19 CST 2022
//Date --> calendar
calendar.setTime(new Date());
int days3 = calendar.get(calendar.DAY_OF_MONTH);
System.out.println(days3); //28
posted @   植树chen  阅读(42)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
点击右上角即可分享
微信分享提示