import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
/**
* java中的时间使用标准类库的Date类表示,是用距离一个固定时间点的毫秒数(可正可负 long类型)表达一个特定的时间点
* 距离UTC(世界调整时间) 1970年1月1日 00:00:00 CST
*java.util.Date类封装日期及时间信息,由于Date设计存在缺陷,所以在jdk1.1以后大部分方法被声明过时的,不再建议使用。
*现在仅仅用来表示时间。而与时间相关的操作全部使用Calendar来替代
*
*/
public class DateDemo {
public static void main(String[] args)
throws ParseException {
Date date=
new Date();
System.out.println(date);
/**使用setTime和getTime设置及获取时间**/
long time=date.getTime();
System.out.println(time);
time+=
60*
60*
24*
1000;
date.setTime(time);
System.out.println(date);
/**
* SimpleDateFormat
* java.text.SimpleDateFormat是一个以与语言环境有关的方式来格式化和解析日期的具体类。允许日期->文本,文本->日期
* y:年 M:月 d:日 H:24小时制 h:12小时制 m:分钟 s:秒 E:星期 a:上午下午
* String format(Date date)按照SDF指定的日期格式将给定的date表示的日期转换为字符串
* Date parse(String str)方法用于按照特定格式将表示是安静的字符串转换为Date对象
*/
Date now=
new Date();
SimpleDateFormat sdf=
new SimpleDateFormat(
"yyyy年MM月dd日 -E-a HH:mm:ss");
System.out.println(sdf.format(now));
String str=
"2017-07-12 15:12";
SimpleDateFormat sdf1=
new SimpleDateFormat(
"yyyy-MM-dd HH:mm");
System.out.println(sdf1.parse(str));
/**
* Calendar
* java.util.Calendar类用于封装日历信息,其主要作用在于方法可以对时间分量进行运算
* Calendar是抽象类,其具体子类针对于不同国家的日历系统,其中应用最广泛的是GregorianCalendar(格里高利历,阳历)
* Calendar提供了一个静态方法getInstance来更具当前系统所在地区返回一个适用的实现类,大部分地区返回的都是阳历实现类
*
* Date getTime():Calendar提供的该方法可以获取一个Date对象,该对象就表示当前Calendar所表示的日期
* void setTime(Date date):使当前Calendar表示给定的Date所表示的日期
*/
Calendar calendar=Calendar.getInstance();
System.out.println(calendar);
Date date1=calendar.getTime();
System.out.println(date1);
/**
* Calendar提供了方法:
* int get(int field):该方法可以获取当前Calendar中指定时间分量所对应的值
* 时间分量是一个int值,在Calendar中有大量的常量定义了不同的时间分量
*/
int year=calendar.get(Calendar.YEAR);
int month=calendar.get(Calendar.MONTH)+
1;
int day=calendar.get(Calendar.DAY_OF_MONTH);
int day1=calendar.get(Calendar.DAY_OF_WEEK);
int day2=calendar.get(Calendar.DAY_OF_YEAR);
int day3=calendar.get(Calendar.DATE);
int hour=calendar.get(Calendar.HOUR);
int hour1=calendar.get(Calendar.HOUR_OF_DAY);
int minute=calendar.get(Calendar.MINUTE);
int second=calendar.get(Calendar.SECOND);
System.out.println(year+
"-"+month+
"-"+day+
"-"+hour1+
":"+minute+
":"+second);
/**int getActualMaximum(int field):给定此Calendar的时间值,返回指定日历字段可能拥有的最大值**/
int max=calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
System.out.println(
"本月"+max+
"天");
System.out.println(
"本年"+calendar.getActualMaximum(Calendar.DAY_OF_YEAR)+
"天");
/**
* void set(int field,int value)
* 对指定时间分量设定指定的值
* 表示2008-08-13 20:07:46
*/
calendar.set(Calendar.YEAR,
2008);
calendar.set(Calendar.MONTH,Calendar.AUGUST);
calendar.set(Calendar.DAY_OF_MONTH,
13);
calendar.set(Calendar.HOUR_OF_DAY,
20);
calendar.set(Calendar.MINUTE,
7);
calendar.set(Calendar.SECOND,
46);
System.out.println(calendar.getTime());
/**
* void add(int field,int value)
* 对指定时间分量加上给定的值,若给定对的值为负数则是减去给定的值
*/
Calendar c=Calendar.getInstance();
c.add(Calendar.YEAR,
3);
c.add(Calendar.MONDAY,
2);
c.add(Calendar.DAY_OF_YEAR,
5);
System.out.println(c.getTime());
}
}