java中的时间
(1)java中采用标准类库的Date类型时间。使用距离一个固定时间点的毫秒数的时间点
来表示时间。
(2)固定时间点即纪元(UTC)。也就是1970年1月1日00:00:00
(3)UTC与GMT都是世界通用的时间格式
Date类型
java.util.Date类型,封装了日期与时间的信息。之后里面的很多功能都弃用,渐渐的使用Calender类型来替代。
(1)构造器
Date():创建一个封装当前系统时间的Date对象
Date(long time): 创建一个距离纪元time毫秒的Date对象
(2)常用方法
long getTime(): 返回距离纪元的毫秒数
void setTime(long time):修改时间对象的毫秒数
SimpleDateFormat
作用:此类型可以对Date进行格式化及其将字符串转成Date类型。
常用构造器:
SimpleDateFormat(String pattern):创建一个指定格式的SimpleDateFormat对象。
常用方法:
String format(Date date): 作用是将参数date按照构造器里的格式进行格式化成字符串
Date parse(String text):作用是将指定字符串转换成Date类型
(可能出现ParseException异常,出现异常的原因是String参数的格式与构造器格式不一致)
常用格式:
yy:
yyyy:年
MM:月
dd:日
HH:时(24制)
hh:时(12制)
mm:分
ss:秒
a:上下午
E:星期
Calendar
(1)是日历类型,此类型封装了日历的所有信息。主要用于计算时间分量。
时间分量:日期和时间的一部分有效值。
(2)Calendar
是一个抽象类,提供了一个方法getInstance()来获取一个通用的子类型对象,
一般都是GregorianCalendar(格力高历)类型的对象。
(3)时间分量常量:
static int YEAR
static int MONTH:日历里的月份是0-11。
static int DATE
static int DAY_OF_WEEK:默认从周日到周六,即1-7。
static int DAY_OF_MONTH
……
(4)类型中提供了get(int field)方法,通过指定时间分量常量来获取相应的时间分量值。
(5)提供了set(int Field,int value),进行设置时间分量值
(6)提供了add(int field,int value),用于增加对当前日历信息通过时间分量来计算value后的日历信息
注意:value值如果是负数,向前推算。
其他方法:
Date getTime():将日历对象转成Date对象
void setTime(Date date):将指定date日期转成日历对象的信息
int getActualMaximum(int field):获取指定时间分量所在的最大值
如:指定Calendar.MONTH,获取的是11,即12月份
Calendar.DATE,获取的是当前日历对象所在月的最大值
public class TextCalendar04 {
public static void main(String[] args) {
/*
* 有一产品的生产日期是昨天的当前时刻,保质期为45天, 计算过期日。
*/
Calendar d1 = Calendar.getInstance();
d1.add(Calendar.DATE, 44);
System.out.println(d1.getTime());
System.out.println(d1.getActualMaximum(Calendar.MONTH));
}
}