Java中与日期时间相关的类(JDK8之前)

Java中与日期时间相关的类(JDK8之前)

  • java.lang.System类提供的public static long currentTimeMillis()用来返回当前时间与1970年1月1日0时0分0秒之间以毫秒为单位的时间差
  • currentTimeMillis()适合于计算时间差
package www.bh.c.datetest;

public class Test01 {
    public static void main(String[] args) {
        long time = System.currentTimeMillis();
        //返回当前时间与1970年1月1日0时0分0秒之间以毫秒为单位的时间差
        //称为时间戳
        System.out.println(time);//1605080421376
    }
}
  • java.util.Date类
    • 表示待定的瞬间,精确到毫秒
  • 构造器
    • Date():使用无参构造器创建的对象可以获取本地当前时间
    • Date(long date)
  • 常用方法
    • getTime():返回自1970年1月1日0时0分0秒GMT以来此Date对象表示的毫秒值
    • toString():把此Date对象转换为以下形式的String:dow mon dd hh:mm:ss zzz yyyy 其中:dow是一周中的某一天(Sun,Mon,Tue,Wed,Thu,Fri,Sat),zzz是时间标准
package www.bh.c.datetest;
import java.util.Date;

public class Test01 {
    public static void main(String[] args) {
        Date date = new Date();
        System.out.println(date.toString());//Wed Nov 11 15:57:45 CST 2020
        System.out.println(date.getTime());//1605081465502

        Date date1 = new Date(1605081359007L);
        System.out.println(date1.toString());//Wed Nov 11 15:55:59 CST 2020
    }
}
  • 总结:两个构造器:1.Date():创建一个对应当前时间的Date对象

    ​ 2.创建指定毫秒数的Date对象

​ 两个方法:1.toString():显示当前的年月日时分秒

​ 2.getTime():获取当前Date()对象对应的毫秒数(时间戳)

  • java.sql.Date对应着数据库中的日期类型的变量

    • 实例化
    package www.bh.c.datetest;
    import java.sql.Date;
    
    public class Test02 {
        public static void main(String[] args) {
            Date date = new Date(1605081465502L);
            System.out.println(date);//2020-11-11
        }
    }
    
    • 将java.util.Date对象转换为java.sql.Date对象
package www.bh.c.datetest;
import java.util.Date;

public class Test02 {
    public static void main(String[] args) {
        //情况1
        Date date1=new java.sql.Date(1605081465502L);
        java.sql.Date date2=(java.sql.Date) date1;
        System.out.println(date2);//2020-11-11
        //情况2
        Date date3 = new Date();
        java.sql.Date date4=new java.sql.Date(date3.getTime());
        System.out.println(date4);//2020-11-11
    }
}
  • java.text.SimpleDateFormat类

    • 格式化:日期—>文本,解析:文本—>日期

    • 格式化:

      • SimpleDateFormat():默认的模式和语言环境创建对象

      • public SimpleDateFormat(String pattern):该构造方法可以用参数pattern指定的格式创建一个对象

      • public String format(Date date):方法格式化时间对象date

    • 解析:

      • public Date parse(String source):从给定字符串的开始解析文本,以生产一个日期
package www.bh.c.datetest;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Test03 {
    public static void main(String[] args) throws ParseException {
        //实例化SimpleDateFormat:使用默认的构造器
        SimpleDateFormat sdf = new SimpleDateFormat();
        //格式化:日期--->字符串
        Date date = new Date();
        System.out.println(date);//Wed Nov 11 17:25:36 CST 2020

        String s=sdf.format(date);//2020/11/11 下午5:22
        System.out.println(s);
        //解析:格式化的逆过程,字符串--->日期 
        String s1="2020/11/11 下午5:22";
        Date date1=sdf.parse(s1);
        System.out.println(s1);//2020/11/11 下午5:22
    }
}

  • 按指定的方式格式化和解析:调用带参的构造器
package www.bh.c.datetest;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Test04 {
    public static void main(String[] args) throws ParseException {
        //实例化Date
        Date date = new Date();
        //调用带参的构造器实例化SimpleDateFormat
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        //格式化
        String format = sdf.format(date);
        System.out.println(format);//2020-11-11 06:24:53
        //解析:要求字符串必须是符合SimpleDateFormat识别的格式(构造器参数),不然就会抛异常
        Date parse = sdf.parse("2020-11-11 06:12:55");
        System.out.println(parse);//Wed Nov 11 06:12:55 CST 2020
    }
}
  • 练习:字符串“2020-09-08”转换为java.sql.Date
package www.bh.c.datetest;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Test05 {
    public static void main(String[] args) throws ParseException {
        String str="2020-11-11";
        //调用带参的构造器实例化SimpleDateFormat
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        //解析:字符串必须符合SimpleDateFormat识别的格式(构造器参数)
        Date date = sdf.parse(str);
        //转换为java.sql.Date
        java.sql.Date date1 = new java.sql.Date(date.getTime());
        System.out.println(date1);
    }
}
  • java.util.Calendar类

    • Calendar是一个抽象基类主要用于完成日期字段之间相互操作的功能

    • 获取Calendar实例的方法

      • 使用Calendar.getlnstance()方法
      package www.bh.c.datetest;
      import java.util.Calendar;
      
      public class Test06 {
          public static void main(String[] args) {
              Calendar instance = Calendar.getInstance();
              System.out.println(instance);
          }
      }
      
      • 调用它的子类GregorianCalendar的对象
    package www.bh.c.datetest;
    import java.util.Calendar;
    import java.util.GregorianCalendar;
    
    public class Test06 {
        public static void main(String[] args) {
            GregorianCalendar gc = new GregorianCalendar();
            System.out.println(gc);
        }
    }
    
    • 一个Calendar的实例是系统时间的抽象表示,通过get(int field)方法来取得想要的时间信息,比如YEAR、MONTH
      • public void set(int field,int value)
      • public void add(int field,int amount)
      • public final Date getTime()
      • public final void setTime(Date date)
    • 注意:
      • 获取月份时:一月是0…十二月是11
      • 获取星期时:周日是1…周六是7
    • 常用方法:
package www.bh.c.datetest;
import java.util.Calendar;

public class Test06 {
    public static void main(String[] args) {
        //实例化(使用Calendar.getlnstance()方法)
        Calendar instance = Calendar.getInstance();
        System.out.println(instance);
        //get()
        int i = instance.get(Calendar.DAY_OF_MONTH);
        System.out.println(i);//12(12号)
        int i1 = instance.get(Calendar.DAY_OF_WEEK);
        System.out.println(i1);//5(周四)
    }
}
package www.bh.c.datetest;

import java.util.Calendar;

public class Test06 {
    public static void main(String[] args) {
        Calendar instance = Calendar.getInstance();
        System.out.println(instance);
        int i = instance.get(Calendar.DAY_OF_MONTH);
        System.out.println(i);
        int i1 = instance.get(Calendar.DAY_OF_WEEK);
        System.out.println(i1);

        System.out.println("=================");
        //set()
        instance.set(Calendar.DAY_OF_MONTH,2);
        i=instance.get(Calendar.DAY_OF_MONTH);
        System.out.println(i);//2
    }
}
package www.bh.c.datetest;
import java.util.Calendar;

public class Test06 {
    public static void main(String[] args) {
        //实例化(使用Calendar.getlnstance()方法)
        Calendar instance = Calendar.getInstance();
        System.out.println(instance);
        //get()
        int i = instance.get(Calendar.DAY_OF_MONTH);
        System.out.println(i);//12
        System.out.println("=================");
        //add()
        instance.add(Calendar.DAY_OF_MONTH,3);
        i=instance.get(Calendar.DAY_OF_MONTH);
        System.out.println(i);//15
    }
}
package www.bh.c.datetest;
import java.util.Calendar;
import java.util.Date;
//getTime():日历类--->Date
public class Test07 {
    public static void main(String[] args) {
        Calendar instance = Calendar.getInstance();
        Date time = instance.getTime();
        System.out.println(time);//Thu Nov 12 15:45:23 CST 2020
    }
}
package www.bh.c.datetest;
import java.util.Calendar;
import java.util.Date;
//setTime():Date--->日历类
public class Test07 {
    public static void main(String[] args) {
        Date date = new Date();
        System.out.println(date);//Thu Nov 12 15:51:14 CST 2020
        Calendar instance = Calendar.getInstance();
        instance.setTime(date);
        int days=instance.get(Calendar.DAY_OF_MONTH);
        System.out.println(days);//12
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值