Date 类

Date 表示特定的瞬间,精确到毫秒。
在 JDK 1.1 之前,类 Date 有两个其他的函数。它允许把日期解释为年、月、日、小时、分钟和秒值。它也允许格式化和解析日期字符串。不过,这些函数的 API 不易于实现国际化。从 JDK 1.1 开始,应使用 Calendar 类实现日期和时间字段之间转换,使用 DateFormat 类来格式化和解析日期字符串。Date 中的相应方法已废弃(查阅自 API 文档)

Calendar 类

Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。
瞬间可用毫秒值来表示,它是距历元(即格林威治标准时间 1970 年 1 月 1 日的 00:00:00.000,格里高利历)的偏移量。
简单说就是:java.util.Date 是个日期数据;java.util.Calendar 用于日期相关的计算;

2.1 如何实例化当前时间?

复制代码

Date date = new Date();
 Calendar calendar = Calendar.getInstance();

2.2 如何实例化特定时间?

注:mm:ss必须小写,否则无法转换。HH大小写无影响。

DateFormat df = new SimpleDateFormat(“yyyy-MM-dd hh:mm:ss”);
 Date date1 = null;
 try {
date1 = df.parse(“2017-08-07 11:11:11”);
 catch (ParseException e) {
 e.printStackTrace();
 }
Calendar calendar1 = Calendar.getInstance();
 calendar1.setTime(date1);

实例化时注意:
建议从Date使用格式转换,然后赋值(setTime)给Calendar,不然直接设置Calendar用毫秒数(setTimeInMillis)太麻烦。(其实不知道怎么设置…)

另外,实例化时的格式:yyyy-MM-dd hh:mm:ss。mm:ss必须小写,否则无法转换。HH大小写无影响。

2.3 Date和Calendar如何互相转化?

Date date1 = new Date();
Calendar calendar1 = Calendar.getInstance();
calendar1.setTime(date1);
Date date = calendar1.getTime();
Calendar类有两个方法:setTime和getTime。
setTime接收一个Date类型的参数;
getTime返回一个Date类型的结果;
主要是通过这个方式实现互相转换。Date类好像没有相关转换的方法

2.4 如何格式化时间?

DateFormat df = new SimpleDateFormat(“yyyy-MM-dd hh:mm:ss”);
String s = df.format(new Date());
使用DateFormat类,进行format。

2.5 如何对日期进行操作。即日期加减:年月日以及小时分秒等。

DateFormat df = new SimpleDateFormat(“yyyy-MM-dd hh:mm:ss”);
Date date1 = new Date();
 //输出:2018-10-18 02:18:27
 System.out.println(df.format(date1));Calendar calendar1 = Calendar.getInstance();
 calendar1.setTime(date1);
 calendar1.add(Calendar.MONTH,1);
 Date date = calendar1.getTime();//输出:2018-11-18 02:18:27
 System.out.println(df.format(date));

使用Calendar的add方法:下面是官方接口定义:

abstract void add(int field, int amount) 根据日历的规则,为给定的日历字段添加或减去指定的时间量。

field表示时间量:可以为如下:
Calendar.ERA:表示无加减;

Calendar.YEAR:年

Calendar.MONTH:月

Calendar.DATE:日

Calendar.HOUR:小时

Calendar.MINUTE:分钟

Calendar.SECOND:秒

注意:Calendar中的所有常量都可以为参数,不一定局限于上面的。比如Calendar.HOUR_OF_DAY,Calendar.WEEK_OF_MONTH等。不管是什么,只要这个值和周相关就是周(月中的第几周,年中的第几周等),和日相关就是日(一年当中的第几天,一月当中的第几天,一周当中的第几天),和小时相关就是小时

amount:为整数表示当前时间的基础上加上对应的时间量;为负数表示当前时间的基础上减去对应的时间量。
2.6 其他常用方法
2.6.1 获取当天结束时间:59分59秒0毫秒
复制代码

private Date getDayEnd() {
 Calendar cal = new GregorianCalendar();
 cal.set(Calendar.HOUR_OF_DAY, 23);
 cal.set(Calendar.MINUTE, 59);
 cal.set(Calendar.SECOND, 59);
 cal.set(Calendar.MILLISECOND, 0);
 return cal.getTime();
 }

java mock怎么处理

java date 拼接 date和time_java

java date 拼接 date和time_java_02