API--02--Java.util.date与java.sql.date
JDK8 之前日期时间 APISystem类 currentTimeMillis();时间戳返回当前时间与1970年1月1日0时0分0秒之间以毫秒为单位的时间差。称为时间戳java.util.Date类两个构造器的使用构造器一:Date():创建一个对应当前时间的Date对象构造器二:创建指定毫秒数的Date对象两个方法的使用toString():显示当前的年、月、日、时、分、秒getTime()
·
JDK8 之前日期时间 API
System类 currentTimeMillis();
时间戳
- 返回当前时间与1970年1月1日0时0分0秒之间以毫秒为单位的时间差。
- 称为时间戳
java.util.Date类
两个构造器的使用
- 构造器一:Date():创建一个对应当前时间的Date对象
- 构造器二:创建指定毫秒数的Date对象
两个方法的使用
- toString():显示当前的年、月、日、时、分、秒
- getTime():获取当前Date对象对应的毫秒数。(时间戳)
案例:
@Test
public void test2(){
//构造器一:Date():创建一个对应当前时间的Date对象
Date date1 = new Date();
System.out.println(date1.toString());//Sat Feb 16 16:35:31 GMT+08:00 2019
System.out.println(date1.getTime());//1550306204104
//构造器二:创建指定毫秒数的Date对象
Date date2 = new Date(155030620410L);
System.out.println(date2.toString());
}
默认格式:
- date1.toString() 月日 时分秒 时区 年
Sat Feb 16 16:35:31 GMT+08:00 2019
Java.sql.Date类
一. java.sql.Date是java.util.Date的==子类
可见这三个类都是java.utl.Date的子类。
而这三个类都是对应与jdbc处理日期格式的类,有着 不同的日期精度和格式
二. java.sql.Date对应着数据库中的日期类型的变量
- java中有两个Date类,一个是java.util.Date通常情况下用它获取当前时间或构造时间
- java.sql.Date是针对SQL语句使用的.
三. java.sql.Date时间格式
- java.sql.Date也是一个时间戳
- 但它把当前的时间剪掉了,保证它一定是那个日期的0点0分0秒的时间戳
- java.sql.Date.tostring的时候 格式 是 年 月 日
java.sql包下给出三个与数据库相关的日期时间类型:
- Date:表示日期,只有年月日,没有时分秒。会丢失时间;
- Time:表示时间,只有时分秒,没有年月日。会丢失日期;
- Timestamp:表示时间戳,有年月日时分秒,以及毫秒。
@Test
public void test03(){
Date utilDate = new Date();//util utilDate
System.out.println("utilDate : " + utilDate);
//uilt date转sql date
java.sql.Date sqldate = new java.sql.Date(utilDate.getTime());
Time sqltime = new Time(utilDate.getTime());
Timestamp Timestamp = new Timestamp(utilDate.getTime());
System.out.println("sqldate : " + sqldate);
System.out.println("sqltime : " + sqltime);
System.out.println("Timestamp : " + Timestamp);
}
util.Date与sql.Date的相互转换
一: java.sql.Date=>java.util.Date
因为本身sql.Date就是 java.util.Date子类 .多态呈现
上向转型,会自动转换
Date date4 = new java.sql.Date(2343243242323L);
二 如何将java.util.Date对象转换为 => java.sql.Date对象
- 情况一:(java.sql.Date) date4;强转
- 情况二:new java.sql.Date(date6.getTime()); 利用时间戳,通过构造函数
@Test
public void test04(){
//如何将java.util.Date对象转换为java.sql.Date对象
//情况一:
Date date4 = new java.sql.Date(2343243242323L);
java.sql.Date date5 = (java.sql.Date) date4;
System.out.println(date4);
System.out.println(date5);
//情况二:
Date date6 = new Date();
java.sql.Date date7 = new java.sql.Date(date6.getTime());
System.out.println(date6);
System.out.println(date7);
}
}
补充:
同时util.Date和sql.Date都可以用SimpleDateFormat格式化
@Test
public void test05(){
Date utilDate = new Date();//uilt.Date
System.out.println("utilDate : " + utilDate);
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("format utilDate : " + format.format(utilDate));
System.out.println("**********************************************");
java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime());
Timestamp Timestamp = new Timestamp(utilDate.getTime());//uilt.Date转sql.Date
System.out.println("sqlDate : " + sqlDate);
System.out.println("format sqlDate: " + format.format(sqlDate));
System.out.println("**********************************************");
System.out.println("Timestamp : " + Timestamp);
System.out.println("format Timestamp : " + format.format(Timestamp));
}
案例
Java 求两个日期相减
public static void main(String[] args) throws Exception {
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date d1 = df.parse("2004-01-05 13:31:40");
Date d2 = df.parse("2004-01-02 13:30:40");
long diff = d1.getTime() - d2.getTime();//这样得到的差值是毫秒级别
long days = diff / (1000 * 60 * 60 * 24);
long hours = (diff-days*(1000 * 60 * 60 * 24))/(1000* 60 * 60);
long minutes = (diff-days*(1000 * 60 * 60 * 24)-hours*(1000* 60 * 60))/(1000* 60);
System.out.println("结果:\t"+days+"天"+hours+"小时"+minutes+"分");
}
更多推荐
已为社区贡献3条内容
所有评论(0)