Date和DateFormat
Date和DateFormat
Date类:由于千年虫,不用于计算,只表示时间
Java中用于描述日期的类
Date内部维护一个long值,这个值表示的是1970-1-1 00:00:00到Date所表示的日期的毫秒值
//创建一个Date实例,默认的构造方法创建的日期代表当前系统时间
Date date = new Date();
//输出date对象
System.out.println(date);
long time = date.getTime();
System.out.println(time);
date.setTime(time+1000*60*60*24);
System.out.println(date);
//一般不用,千年虫问题
int year = date.getYear();
//Calendar类
//日历类:Calendar不存在千年虫问题,并且可以非常方便的计算日期
//使用现象:需求:我想知道16天以后是哪一天,若用传统的date描述怎么计算,我们要计算毫秒数值
//需求:得知下一月1号的日期
//通过Calendar的静态方法获取一个实例,该方法会自行解决时区,帮我们创建Calendar实例
//该方法会根据当前系统所在地区来决定时区
//实际上根据不同的地区,Calendar有若干个子类实现,而Calendar本身是抽象类,不能被实例化
//构造出来表示当前时间的日历类
Calendar calendar =Calendar.getInstance();
Date now = calendar.getTime();//获取日历所描述的日期
System.out.println(now);
//设置日历为2013年
calendar.set(Calendar.YEAR,2013);
//设置日历表示11月 月是从0开始的所以要减1
calendar.set(Calendar,MONTH,10);
Date date = calendar.getTime();
System.out.println(date);
//设置11月15号
//DAY_OF_MONTH 月里面的天 日
//DAY_OF_WEEK 星期里的天 星期几
//DAY_OF_YEAR 年里面的天
calendar.set(Calendar.DAY_OF_MONTH,15);
System.out.println(date);
calendar.add(calendar.DAY_OF_YEAR,22);
System.out.println(calendar.getTime());
calendar.add(Calendar.DAY_OF_YEAR,-5);
System.out.println(calendar.getTime());
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH);
int day = calendar.get(Calendar.DAY);
System.out.println(year+"年"+month+"月"+"日");
//SimpleDateFormat类 日期转化
//该类的作用是可以很方便的在字符串和日期类之间相互转化
//我们可以将一个描述日期的字符串:2012-01-01转化为一个Date对象
//同样,我们也可以将一个描述日期的Date对象转化为2012-01-01这样的字符串来表示
//这里我们在字符串与日期类间相互转化是需要一些约束的
//2012-01-01转化为一个Date对象
//SimpleDateFormat用来描述日期的格式
//yyyy-MM-dd
//创建一个SimpleDateFormat
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
//创建一个日期格式字符串
String dateFormat = "2013-05-14";
Date date = sdf.parse(dateFormat);
System.out.println(date);
Date now = new Date(0;
String nowStr = sdf.format(now);
System.out.println(nowStr);
SimpleDateFormat format2 = new SimpleDateFormat("yyyy/MM/dd");
nowStr = format2.format(now);
System.out.println(nowStr);