日历,日期
Date 类
java.util.Date
类 表示特定的瞬间,精确到毫秒。
所获得的为日期时间,即系统时间。
作用:用于获取毫秒值,用于计算
成员方法:
A. 存 void setTime(long);
存一个数据
B 取 long getTime(long);
import java.util.Date;
public class demo2
{
public static void main(String[] args) {
Date date =new Date(); //调用Date 类
date.setTime(10232); //给date附值
System.out.println(date); //输出的为从源点时间到经过了10232时间后的日期
long time = date.getTime();//将日期转换成LONG类型的数
System.out.println(time);//输出为10232
}
}
常用方法
DateFormat
类
java.text.DateFormat
是日期/时间格式化子类的抽象类,可通过此类完成日期与文本之间的转换,也就是Date与String之间的互换。
格式化:按指定的对象格式,从Date转String
解析:按指定的格式,从String转Date
构造方法
由于DateFormat
为抽象类,不能直接使用,所以需要常用的子类SimpleDateFormat
,这个类需要一个模式来指定格式化或解析的标准
public SimpleDateFormat(String pattern)
:用给定的模式和默认语言环境的日期格式符号构造
SimpleDateFormat
。
参数pattern是一个字符串,代表日期时间的自定义格式。
format方法
使用format方法的代码为:
//将日期以想要的格式输出。那么就涉及到两步,第一获得日期,调用Date类
// 第二,使用format 方法将日期转成需要文本格式,即字符串
Date date = new Date();
System.out.println(date); //此时,date为空参调用,直接输出为当前日期
long time2 = date.getTime();
System.out.println(time2); //获得是一个long 型的数据
SimpleDateFormat time1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String str = time1.format(time2); //获得的为一个String类型的字符串
String str1="2018-12-02 11:12:00";
System.out.println(time1.format(time2));
parse方法
使用parse方法的代码为:
//按一定的格式将字符串转成日期 ,就得调用Parse,这个方法有一个异常,
需要抛出异常,即throws ParseException
public class demo1 {
public static void main(String[] args) throws ParseException {
SimpleDateFormat time1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date1 = time1.parse(str);
System.out.println(date1);
}
}
总结:simpleDateFormat
的作用就是将时间转成各自需要的格式以String字符串 输出出来。
Calendar 类
作用:用于获取单独的某个时间点
Calendar为抽象类,由于语言敏感性,Calendar类在创建对象时并非直接创建,而是通过静态方法创建,返回子
类对象,如下:
Calendar静态方法
public static Calendar getInstance() :
使用默认时区和语言环境获得一个日历
格式:Calendar time3=Calendar.getInstance();
这里使用了反射技术,暂不介绍
在定义了类后,就可使用该类中的get与set方法。
例:
如何知道某年的某天为周几:
//Calendar
Calendar time3 = Calendar.getInstance();
time3.set(2017, 11, 3); //给定时间,2017年 12月3日 以下做解释
int week= time3.get(Calendar.DAY_OF_WEEK)-1;
System.out.println(time3.get(Calendar.DAY_OF_WEEK) - 1);
在java中,日期使用的是英国时间,它的月份为0至11月,即我们的1月对应对方的0月。12月对应对方的11月。
在周中,它以周日为开始,即周日为我们的星期一。那么,我们的周日就为0,
记忆方法:获得月份为 月份-1= 需输入月份。
get/set方法
get方法用来获取指定字段的值,set方法用来设置指定字段的值,代码使用演示:
import java.util.Calendar;
public class CalendarUtil {
public static void main(String[] args) {
// 创建Calendar对象
Calendar cal = Calendar.getInstance();
// 设置年
int year = cal.get(Calendar.YEAR); //获取当前年
// 设置月
int month = cal.get(Calendar.MONTH) + 1; //获取当前月
// 设置日
int dayOfMonth = cal.get(Calendar.DAY_OF_MONTH); //获取当前月的日期
//设置 周
int week = time3.get(Calendar.DAY_OF_WEEK)-1; //获取当前的周
System.out.print(year + "年" + month + "月" + dayOfMonth + "日"+"星期"+week);
}
}
add方法
add方法可以对指定日历字段的值进行加减操作,如果第二个参数为正数则加上偏移量,如果为负数则减去偏移
量。代码如:
import java.util.Calendar;
public class Demo08CalendarMethod {
public static void main(String[] args) {
Calendar cal = Calendar.getInstance();
System.out.print(year + "年" + month + "月" + dayOfMonth + "日"); // 2018年1月17日
// 使用add方法
cal.add(Calendar.DAY_OF_MONTH, 2); // 加2天
cal.add(Calendar.YEAR, ‐3); // 减3年
System.out.print(year + "年" + month + "月" + dayOfMonth + "日"); // 2015年1月18日;
}
}
getTime
方法
Calendar中的getTime
方法并不是获取毫秒时刻,而是拿到对应的Date对象。
import java.util.Calendar;
import java.util.Date;
public class Demo09CalendarMethod {
public static void main(String[] args) {
Calendar cal = Calendar.getInstance();
Date date = cal.getTime();
System.out.println(date); // Tue Jan 16 16:03:09 CST 2018
}
}