Java日期类(1)-JDK8之前的日期API

  1. java.lang.System类
    System类提供的public static long currentTimeMillis()用来返回当前时间与1970年1月1日0时0分0秒之间以毫秒为单位的时间差。
    此方法适于计算时间差。
public class Test {
    public static void main(String[] args) {
        System.out.println(System.currentTimeMillis());
    }
}
  1. java.util.Date类
    表示特定的瞬间,精确到毫秒
     构造器:
  • Date():使用无参构造器创建的对象可以获取本地当前时间。
  • Date(long date)
    常用方法:
  1. getTime():返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象
    表示的毫秒数。
  2. toString():把此 Date 对象转换为以下形式的 String: dow mon dd
    hh:mm:ss zzz yyyy 其中: dow 是一周中的某一天 (Sun, Mon, Tue,
    Wed, Thu, Fri, Sat),zzz是时间标准。
     其它很多方法都过时了。
public static void test2(){
    //构造器一 date() 创建了一个对应当前时间的Date()对象
    Date date1=new Date();
    System.out.println(date1.toString());//Fri Feb 21 22:59:14 CST 2020
    System.out.println(date1.getTime());

    //构造器二  创建指定毫秒数的date对象
    Date date2 = new Date(1582298162369L);
    System.out.println(date2.toString());
     
     //在用Date设置一个时间是会发生偏移量 并且它的月份是从0开始的
     Date date1=new Date(2020,9,8);//Fri Oct 08 00:00:00 CST 3920
     //所以要想获得真确时间必须在年份上减去一个1900并在月份上减去1
     Date date1=new Date(2020-1900,9-1,8);//当然这个方法也早已经过时
     System.out.println(date1);
    }
  1. java.sql.Date类

对应着数据库中的日期类型的变量

//创建java.sql.date对象
java.sql.Date date3 = new java.sql.Date(1582298478304L);
System.out.println(date3);//只显示年月日
//如何将java.util.Date对象转换为sql.Date对象
//情况一 :强转
Date date4=new java.sql.Date(1582299029103L);
java.sql.Date date5=(java.sql.Date)date4;
//情况二
Date date6=new Date();
java.sql.Date date7=new java.sql.Date(date6.getTime());
  1. java.text.SimpleDateFormat类

Date类的API不易于国际化,大部分被废弃了,java.text.SimpleDateFormat
类是一个不与语言环境有关的方式来格式化和解析日期的具体类。
 它允许进行格式化:日期----->文本、解析:文本----->日期
 格式化:

  • SimpleDateFormat() :默认的模式和语言环境创建对象
  • public SimpleDateFormat(String pattern):该构造方法可以用参数pattern
    指定的格式创建一个对象,该对象调用:
    public String format(Date date):方法格式化时间对象date
    解析:
    public Date parse(String source):从给定字符串的开始解析文本,以生成
    一个日期。
 public static void test() throws ParseException {
      //实例化 使用默认构造器
      SimpleDateFormat sdf = new SimpleDateFormat();
      //格式化 日期--->字符串
      Date date = new Date();
//      System.out.println(date);
      String format=sdf.format(date);
      System.out.println(format);
      //解析
	String str="2020/2/22 下午1:14";//默认格式
	Date parse = sdf.parse(str);
	System.out.println(parse);
	}

如果想要按指定的方式来格式化 可以调用带参的构造器

public static void test() throws ParseException {
 Date date = new Date();
 SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
    String format2 = sdf2.format(date);
    System.out.println(format2);//2020-02-22 01:23:15
    //将得到的字符串进行解析
    Date date1 = sdf2.parse(format2);
    System.out.println(date1);
}

这里的date会按指定格式yyyy-MM-dd hh:mm:ss打印出来 同样解析也能传递此格式的字符串进行解析

  1. java.util.Calendar(日历)类

Calendar是一个抽象基类,主用用于完成日期字段之间相互操作的功能。
 获取Calendar实例的方法:

  1. 使用Calendar.getInstance()方法
  2. 调用它的子类GregorianCalendar的构造器。

一个Calendar的实例是系统时间的抽象表示,通过get(int field)方法来取得想
要的时间信息。比如YEAR、MONTH、DAY_OF_WEEK、HOUR_OF_DAY 、
MINUTE、SECOND

static  void test(){
    //初始化
    //方式一:创建其子类 GregorianCalendar对象
    //方式二调用静态方法
    Calendar instance = Calendar.getInstance();
    //常用方法
    //get()
    int day = instance.get(Calendar.DAY_OF_MONTH);//当前时间在这个月是第几天
    System.out.println(day);
    System.out.println(instance.get(Calendar.DAY_OF_YEAR));
    
    //set()
    instance.set(Calendar.DAY_OF_MONTH,23);//修改了原本的instance值
    day = instance.get(Calendar.DAY_OF_MONTH);
    System.out.println(day);
    
    //add()
   instance.add(Calendar.DAY_OF_MONTH,3);//在原本的值上增加3天
   day = instance.get(Calendar.DAY_OF_MONTH);  
   System.out.println(day);
   
   //getTime():日历类---->Date
    Date time = instance.getTime();//返回一个当前时间的Date对象
    System.out.println(time);
    
    //setTime Date----->日历类
    Date date=new Date();
    instance.setTime(date);//Date转货为日历类
    day = instance.get(Calendar.DAY_OF_MONTH);//在获取这个date时间是当前月的第几天
    System.out.println(day);
}

注意: 

  • 获取月份时:一月是0,二月是1,以此类推,12月是11
  • 获取星期时:周日是1,周二是2 , 。。。。周六是7
发布了45 篇原创文章 · 获赞 43 · 访问量 7063

猜你喜欢

转载自blog.csdn.net/qq_42193790/article/details/104457355