JavaSE---06日期类

JavaSE---06日期类

    • 1 java.util.Date(JDK1.0)
      • 1.1 相关API
      • 1.2 代码展示
    • 2 SimpleDateFormat 格式化日期
      • 2.1 日期和时间的格式化编码
      • 2.2 代码示例
    • 3 printf格式化日期
      • 3.1 相关转换符
      • 3.2 代码示例
    • 4 字符串转换日期
    • 5 Calendar类(JDK1.1)
      • 5.1 创建Calendar对象
      • 5.2 Calendar类对象字段类型
      • 5.3代码示例
      • 具体实现类一览

1 java.util.Date(JDK1.0)

java.util 包提供了 Date 类来封装当前的日期和时间。 Date 类提供两个构造函数来实例化 Date 对象

  • 第一个构造函数使用当前日期和时间来初始化对象。

Date( )

  • 第二个构造函数接收一个参数,该参数是从1970年1月1日起的毫秒数。

Date(long millisec)

1.1 相关API

JavaSE---06日期类_第1张图片

new Date().getTime() 和 System.currentTimeMillis() 是一样的;不过由于机器性能的原因,可能会相差几十毫秒,毕竟每执行一行代码,都是需要时间的

1.2 代码展示

Date date = new Date();
System.out.println("获取当前时间:"+date.getTime());//我运行时获得的毫秒时间 1595312196509L
System.out.println("获取当前时间:"+System.currentTimeMillis());//我运行时获得的毫秒时间 1595312196509L
Date date1 = new Date(1731231312123L);
Date date2 = new Date();
System.out.println("date的时间在date1的时间前面:"+date.after(date1));
System.out.println("date的时间在date1的时间前面:"+date.before(date1));
//两者相等时候返回0。调用对象在指定日期之前则返回负数。调用对象在指定日期之后则返回正数
System.out.println("调用对象在指定日期之前:"+date1.compareTo(date));
System.out.println("调用对象与指定日期相等:"+date.compareTo(date2));
System.out.println("调用对象在指定日期之后:"+date.compareTo(date1));

2 SimpleDateFormat 格式化日期

SimpleDateFormat 是一个以语言环境敏感的方式来格式化和分析日期的类。SimpleDateFormat 允许你选择任何用户自定义日期时间格式来运行

2.1 日期和时间的格式化编码

JavaSE---06日期类_第2张图片

2.2 代码示例

//y 代表年
//M 代表月
//d 代表日
//H 代表24进制的小时
//h 代表12进制的小时
//m 代表分钟
//s 代表秒
//S 代表毫秒
SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS" );
Date d= new Date();
String str = sdf.format(d);
System.out.println("当前时间通过 yyyy-MM-dd HH:mm:ss SSS 格式化后的输出: "+str);
 
SimpleDateFormat sdf1 =new SimpleDateFormat("yyyy-MM-dd" ); Date d1= new Date();
String str1 = sdf1.format(d1);
System.out.println("当前时间通过 yyyy-MM-dd 格式化后的输出: "+str1);

3 printf格式化日期

printf 方法可以很轻松地格式化时间和日期。使用两个字母格式,它以 %t 开头并且以下面表格中的一个字母结尾

3.1 相关转换符

JavaSE---06日期类_第3张图片

3.2 代码示例

// 初始化 Date 对象
Date date = new Date();
//注意大小写哦
//c的使用
System.out.printf("全部日期和时间信息:%tc%n",date);
//F的使用
System.out.printf("年-月-日格式:%tF%n",date);
//D的使用
System.out.printf("月/日/年格式:%tD%n",date);
//r的使用
System.out.printf("HH:MM:SS PM格式(12时制):%tr%n",date);
//T的使用
System.out.printf("HH:MM:SS格式(24时制):%tT%n",date);
//R的使用
System.out.printf("HH:MM格式(24时制):%tR",date);

4 字符串转换日期

模式(yyyy/MM/dd HH:mm:ss)需要和字符串格式保持一致,如果不一样就会抛出解析异常ParseException

SimpleDateFormat sdf =new SimpleDateFormat("yyyy/MM/dd HH:mm:ss" );
  
String str = "2016/1/5 12:12:12";
          
try {
	Date d = sdf.parse(str);
	System.out.printf("字符串 %s 通过格式  yyyy/MM/dd HH:mm:ss %n转换为日期对象: %s",str,d.toString());
} catch (ParseException e) {
	// TODO Auto-generated catch block
	e.printStackTrace();
}

5 Calendar类(JDK1.1)

官方不再推荐使用,官方解释Date类不利于国际化,推荐使用Calendar抽象类

5.1 创建Calendar对象

  • 创建一个代表系统当前日期的Calendar对象

Calendar c = Calendar.getInstance();//默认是当前日期

  • 创建一个指定日期的Calendar对象

//创建一个代表2009年6月12日的Calendar对象
Calendar c1 = Calendar.getInstance();
c1.set(2009, 6 - 1, 12);

5.2 Calendar类对象字段类型

JavaSE---06日期类_第4张图片

5.3代码示例

Calendar c1 = Calendar.getInstance();
System.out.println(c1.getTime());

//set用法
c1.set(2009, 6, 12);//把Calendar对象c1的年月日分别设这为:2009、6、12
System.out.println(c1.getTime());
c1.set(Calendar.DATE,10);//把 c1对象代表的日期设置为10号,其它所有的数值会被重新计算
System.out.println(c1.getTime());
c1.set(Calendar.YEAR,2008);//把c1对象代表的年份设置为2008年,其他的所有数值会被重新计算
System.out.println(c1.getTime());
//add用法
c1.add(Calendar.DATE, 10);//把c1对象的日期加上10,也就是c1也就表示为10天后的日期,其它所有的数值会被重新计算
c1.add(Calendar.DATE, -10);//把c1对象的日期减去10,也就是c1也就表示为10天前的日期,其它所有的数值会被重新计算

//get用法
int year = c1.get(Calendar.YEAR);// 获得年份
System.out.println(year);

具体实现类一览

JavaSE---06日期类_第5张图片

你可能感兴趣的:(JavaSE)