本文不涉及到java.sql中的日期时间类型,具体对应关系可以从 查看数据库连接问题 一般可以查到你想要的
下面进入正题Java中的日期时间类:
获取时间的方式有java.util.Date,java.util.Calendar;常见的两种,因为我们需要看到多种格式,或者说规范化;
因此有了SimpleDateFormat,他是DateFormat的一个实现类,可以这么说吧?
举个栗子:
1.Date的使用
Date date = new Date();
System.out.println(date);
//out:Fri Jan 19 14:00:48 CST 2018
//输出看不懂啊,怎么办?
Date date = new Date();
System.out.println(date);
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss.SSS");
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy年MM月dd日 hh时mm分ss秒SSS毫秒");
SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy年MM月dd日 hh时mm分");
SimpleDateFormat sdf4 = new SimpleDateFormat("yy/MM/dd HH:mm:ss");
System.out.println("转换之前的日期:"+sdf1.format(date));
System.out.println("转换之后的日期:"+sdf2.format(date));
System.out.println("转换之后的日期:"+sdf3.format(date));
System.out.println("转换之后的日期:"+sdf4.format(date));
//Fri Jan 19 14:06:03 CST 2018
//转换之前的日期:2018-01-19 02:06:03.628
//转换之后的日期:2018年01月19日 02时06分03秒628毫秒
//转换之后的日期:2018年01月19日 02时06分
//转换之后的日期:18/01/19 14:06:03
2.Calendar
①Date代表一个时间点,其值为距公元1970年1月1日 00:00:00的毫秒数。所以它是没有时区和Locale概念的
②由于 Date 类不便于实现国际化,所以JDK1.1之后推荐使用Calendar
Calendar本身是一个抽象类,但它提供了很多静态方法让我们使用很方便。
Calendar的常见使用:Calendar
Calendar在实际使用过程中需要很多注意事项:
1.月份从0开始 public final static int JANUARY = 0;
2.获取天数是从1开始
3.时间滚动只在一年内
4.星期一(MONDAY) 对应的值为2
5.set设置时间会向前进位问题
Calendar calendar=Calendar.getInstance();
calendar.roll(Calendar.MONTH, -3);
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss.SSS");
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy年MM月dd日 hh时mm分ss秒SSS毫秒");
SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy年MM月dd日 hh时mm分");
SimpleDateFormat sdf4 = new SimpleDateFormat("yy/MM/dd HH:mm:ss");
System.out.println("转换之前的日期:"+sdf1.format(calendar.getTime()));
System.out.println("转换之后的日期:"+sdf2.format(calendar.getTime()));
System.out.println("转换之后的日期:"+sdf3.format(calendar.getTime()));
System.out.println("转换之后的日期:"+sdf4.format(calendar.getTime()));
//转换之前的日期:2018-10-19 02:20:57.195
//转换之后的日期:2018年10月19日 02时20分57秒195毫秒
//转换之后的日期:2018年10月19日 02时20分
//转换之后的日期:18/10/19 14:20:57
Calendar cal = Calendar.getInstance();
cal.set(2003, 7 , 31);
SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy年MM月dd日 hh时mm分");
//将月份设为9,系统会把cal自动调整到10月1日
//如果立即修改,系统将会把cal改为10月1日
cal.set(Calendar.MONTH, 8);
//下面代码输出10月1日
System.out.println(sdf3.format(cal.getTime()));//①
//设置DATE字段为5
cal.set(Calendar.DATE, 5);//②
System.out.println(sdf3.format(cal.getTime()));//③
因为Dateformat的非线程安全,Java已经意识到需要为时间及日期功能提供更好的支持了因此对吧!
那么JDK8又提供了哪些方法便于时间日期的操作呢?
JDK8 20个时间日期使用案例:时间使用案例