java学习笔记——java.util包中的日期时间、随机数类

java.util包中的日期时间、随机数类


日期时间类

​ java.util包也是java内置的一个工具包,它包含了集合框架、日期和时间、随机函数生成器等各种实用工具类。

Date类:日期

类 Date 表示特定的瞬间,精确到毫秒。

继续查阅Date类的描述,发现Date拥有多个构造函数,只是部分已经过时,但是其中有未过时的构造函数可以把毫秒值转成日期对象。
在这里插入图片描述
获取当前日期:new Date(); new Date(long 毫秒数);

​ 在开发过程中,通常很多人都习惯使用new Date()来获取当前时间。new Date()所做的事情其实就是调用了System.currentTimeMillis()。如果仅仅是需要或者毫秒数,那么完全可以使用System.currentTimeMillis()去代替new Date(),效率上会高一点。如果需要在同一个方法里面多次使用new Date(),通常性能就是这样一点一点地消耗掉,这里其实可以声明一个引用。

import java.util.Date;
public class Demo02 {
    public static void main(String[] args){
    //获取当前时间方法一
    //		Date now=new Date();
    //获取当前时间方法二
            Date now=new Date( System.currentTimeMillis());
    //转换为本地字符串输出//2020-1-23 18:09:58
    		System.out.println(now.toLocaleString());
    }
}
import java.util.Date;
/*
 *Date类:我们经常用Date表示日期
 *   构造方法:
 *     Date():封装就是当前系统时间
 *     Date(long date)
 *   成员方法
 *     getTime():获取自1970年1月1日 00:00:00 至 当前系统时间 所经过的毫秒值
 *
 */
public class Demo02 {
    public static void main(String[] args) {
        method01();
        //method02();
        //method03();//1579773502084
    }
    public static void method03(){
        Date d=new Date();
        long l=d.getTime();
        System.out.println(l);
    }
    public static void method02(){
        Date d=new Date(6000);//2000代表2000毫秒,2秒
        //会在1970年1月1日00:00:00的基础上加2秒
        System.out.println(d);//Thu Jan 01 08:00:06 CST 1970
        //为什么是8点,因为我们现在是处于东八区
    }
    //Date()
    public static void method01(){
        Date d=new Date();
        System.out.println(d);//Thu Jan 23 17:59:25 CST 2020 //获取的是当前系统时间
    }

}

DateFormat与SimpleDateFormat

​ DateFormat 是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并解析日期或时间。日期/时间格式化子类(如 SimpleDateFormat类)允许进行格式化(也就是日期 -> 文本)、解析(文本-> 日期)和标准化。

​ 我们通过这个类可以帮我们完成日期和文本之间的转换。

​ DateFormat 可帮助进行格式化并解析任何语言环境的日期。对于月、星期,甚至日历格式(阴历和阳历),其代码可完全与语言环境的约定无关。

  • 日期对象转换为日期字符串

    要格式化一个当前语言环境下的日期也就是日期 -> 文本),要通过下面的方法来完成。DateFormat是抽象类,我们需要使用其子类SimpleDateFormat来创建对象。
    在这里插入图片描述

import java.text.SimpleDateFormat;
import java.util.Date;
/*
    DateFormat:处理日期格式的的类。
    DateFormat类的作用:即可以将一个Date对象转换为一个符合指定格式的字符串,也可以将一个符合指定格式的字符串转为一个Date对象。
    通过特定的标识来设置。
    公元  2015年4月6日 12:31:45
    G     yyyy年MM月dd日 HH:mm:ss
    备注:HH-24小时制   hh--12小时制
    日期转换为字符串步骤:
    1、创建对象SimpleDateFormat(“yyyy-MM-dd”)
    2、调用格式化方法 format()
* */
public class Demo{
    public static void main(String[] args) {
        Date now=new Date();
        //  (日期 -> 文本)
        String pattern="yyyy年MM月dd日   HH:mm:ss";
        SimpleDateFormat sdf=new SimpleDateFormat(pattern);
        String nowString=sdf.format(now);
        System.out.println(nowString);
        //2020年01月23日   18:59:00
    }
}

  • 日期字符串转换为日期对象
    在这里插入图片描述
    format方法,用来将Date对象转换成String

    parse方法,用来将String转换成Date(转换时,该String要符合指定格式,否则不能转换)。

    步骤:

    1、创建对象SimpleDateFormat(“yyyy-MM-dd”)

    2、转换 调用parse()

public static void main(String[] args) throws ParseException {
    String birthdayStr = "1999-9-9";
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    //字符串-->日期
    Date birthday = sdf.parse(birthdayStr);
    //输出日期格式,默认格式
    System.out.println(birthday);//Thu Sep 09 00:00:00 CST 1999

} 

Calendar:日历类

​ 在Date后出现,替换掉了许多Date的方法。该类将所有可能用到的时间信息封装为静态成员变量,方便获取。

​ Calendar为抽象类,由于语言敏感性,Calendar类在创建对象时并非直接创建,而是通过静态方法创建,将语言敏感内容处理好,再返回子类对象。

get():获取日历中指定部分的值
在这里插入图片描述

import java.util.Calendar;
import java.util.GregorianCalendar;
/*
 * Calendar:抽象日历类,取代了Date类中的功能
 *    static Calendar getInstance()
 * //返回一个Calendar的子类对象,并且封装了当前的系统日期
 */
public class Demo{
    public static void main(String[] args) {
        //第一种方式利用Calendar.getInstance()方法获取Calendar子类对象
        Calendar c= Calendar.getInstance();//多态
        System.out.println(c);

        //第二种方式直接利用子类创建对象
        Calendar c2=new GregorianCalendar();
        System.out.println(c2);
    }
  • 常用方法:
    在这里插入图片描述

  • public static Calendar getInstance() //获取日期对象

  • public int get(int field) //获取时间字段值

    • YEAR 年

    • MONTH 月,从0开始算起,最大11;0代表1月,11代表12月。

    • DATE 天

    • HOUR 时

    • MINUTE分

    • SECOND秒

    • DAY_OF_MONTH一个月中的某天

    • DAY_OF_WEEK一个星期中的某天,1~7 代表 周日~周六 老外把周日当作第一天

import java.util.Calendar;
import java.util.Date;

public class Demo02 {
    public static void main(String[] args) {
        Calendar c = Calendar.getInstance();
        int year = c.get(Calendar.YEAR);
        System.out.println(year);//2020

        //修改当前时间为3天后
        c.add(Calendar.DATE, 3);
        //修改当前时间为5小时后
        c.add(Calendar.HOUR, 5);

        //设置时间为2020年5月20日
        c.set(Calendar.YEAR, 2020);
        c.set(Calendar.MONTH, 4);//0~11的值 代表 一月~十二月
        c.set(Calendar.DATE, 20);

        int dayOfMoth=c.get(Calendar.DAY_OF_MONTH);
        int dayOfWeek=c.get(Calendar.DAY_OF_WEEK)-1;
        //返回值1~7 代表 周日~周六  老外把周日当作第一天
        System.out.println(dayOfMoth);//20
        System.out.println(dayOfWeek);//3
        Date d = c.getTime();
        System.out.println(d);

    }
}

Random类

​ Random类用于生成随机数。Math类中的random()方法也可以产生随机数,但Math类中的底层就是Random类实现的。

​ Random类中定义了许多方法用于获取随机数。常用的有:

  • int nextInt():返回下一个伪随机数,它是此随机数生成器的序列中均匀分布的int值

  • int nextInt(int n):返回下一个伪随机数,它是取自此随机数生成器序列的、在0(包括)和指定值n(不包括n)之间均匀分布的int值

Random random = new Random();
int i = random.nextInt(10);
System.out.println(i);//返回[0,10)之间的随机整数



 

 
发布了21 篇原创文章 · 获赞 0 · 访问量 2004

猜你喜欢

转载自blog.csdn.net/m0_46183003/article/details/104077373