侧边栏壁纸
博主头像
coydone博主等级

记录学习,分享生活的个人站点

  • 累计撰写 306 篇文章
  • 累计创建 51 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

日期时间类

coydone
2021-01-26 / 0 评论 / 0 点赞 / 458 阅读 / 4,525 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2022-05-01,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

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();
		//Thu Jan 23 17:59:25 CST 2020 //获取的是当前系统时间
        System.out.println(d);
    }
}

日期/时间格式化

日期/时间格式化需要借助两个类: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
    }
}

日期字符串转日期对象

String format(Date date)    将一个Date格式化为日期/时间字符串
Date parse(String source)   从给定字符串的开始解析文本,以生成一个日期    

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():获取日历中指定部分的值。

getInstance():使用默认时区和语言环境获得一个日历。返回值为static Calendar。

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)之间的随机整数
//随机生成[20,30)之间的整数
System.out.println(20+random.nextInt(10));
0

评论区