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));
评论区