Date类
java中用于描述日期的类。
Date内部维护着一个long值,这个值表示的是1970-01-01 00:00:00到Date所表示的日期之间的毫秒值。
Calendar类
日历类
Calendar不存在千年虫问题。并且可以非常方便的计算日期。
SimpleDateFormat类
该类的作用是可以很方便的在字符串和日期类之间相相互转换。
我们可以将一个描述日期的字符串:2012-01-01转换为一个Date对象。
同样,我们也可以将一个描述日期的Date对象转换为2012-01-01这样格式的字符串来表示
package day02;
import java.util.Date;
/**
* java中的日期类 Date
*
* @author Administrator
*
*/
public class MyFirstDate {
public static void main(String[] args) {
// 创建一个Date实例,默认的构造方法创建的日期代表当前系统时间
Date date = new Date();// ctrl+shift+o
/*
* 输出date对象 GMT:格林威治时间 世界上计时流行的标准 中国所属时区为+8区,所以要对时间上的小时+8.
*/
System.out.println(date);
/*
* 查看date内部的毫秒值
*/
long time = date.getTime();
System.out.println(time);
/*
* 可以设置一个时间让Date表示该日期
* 一天后的当前时间
*/
date.setTime(time+1000*60*60*24);
System.out.println(date);
int year = date.getYear();
}
}
package day02;
import java.util.Calendar;
import java.util.Date;
/**
* 日历类
* @author Administrator
*
*/
public class MyCalendar {
public static void main(String[] args) {
/*
* 通过Calendar的静态方法获取一个实例
* 该方法会自行决定时区,帮我们创建Calendar实例
* 该方法会根据当前系统所在地区来决定时区
*
* 这里要注意,实际上根据不同的地区,Calendar有若干个
* 子类实现。而Calendar本身是抽象类,不能被实例化!
* 我们不需要关心创建的实例具体为哪个子类,我们只需要根据
* Calendar规定的方法来使用就可以了。
*/
Calendar calendar = Calendar.getInstance();
//构造出来表示当前时间的日历类
/*
* 日历类所解决的根本问题是简化日期的计算
* 要想表示某个日期还应使用Date来描述
* Calendar是可以将其描述的时间转化为Date的
* 我们只需要调用其getTime()方法就可以获取描述的日期的Date对象了
*/
Date now = calendar.getTime();//获取日历所描述的日期
System.out.println(now);
/*
* 通过日历类计算时间
* 为日历类设置时间
* 日历类设置时间使用通用方法set
* set(int field,int value)
* field为时间分量:Calendar提供了相应的常量值
* value:对应的值
*/
calendar.set(Calendar.YEAR, 1995);
calendar.set(Calendar.MONTH, 1);
/*
* 设置日历表示15号
* DAY_OF_MONTH 月里边的天--号
* DAY_OF_WEEK 星期里的天---星期几
* DAY_OF_YEAR 年里的天
*/
calendar.set(Calendar.DAY_OF_YEAR, 132);
calendar.set(Calendar.DAY_OF_MONTH, 15);
System.out.println(calendar.getTime());
/*
* 想得知22天以后是哪天
*/
calendar.add(Calendar.DAY_OF_YEAR, 22);
System.out.println(calendar.getTime());
/*
* 想得知5天前是哪天?
*/
calendar.add(Calendar.DAY_OF_YEAR, -5);
System.out.println(calendar.getTime());
/*
* 得知1个月后是哪天?
*/
calendar.add(Calendar.MONTH, 1);
System.out.println(calendar.getTime());
/*
* 想获取当前日历表示的日期中的某个时间单位
* 可以使用get方法
*/
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH);
int day = calendar.get(Calendar.DAY_OF_MONTH);
//month要处理
System.out.println(year+"年"+(month+1)+"月"+day+"日");
}
}
package day02;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
/*
* 日期转换类SimpleDateFormat
* 这里我们在字符串与日期类间相互转换是需要一些约束的
* "2012-02-02"这个字符串如何转换为Date对象?
* SimpleDateFormat用来描述日期的格式
* yyyy-MM-dd 2012-12-15
* yy-MM-dd 12-12-30
* yyyy-MM-dd hh:mm:ss 2012-12-15 03:20:53
*/
public class MyDateFormat {
public static void main(String[] args) throws ParseException {
/*
* 创建一个SimpleDateFormat并且告知它要读取的字符串的格式
*/
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
//创建一个日期格式的字符串
String dateFormat = "2013-05-14";
//将一个字符串转换为相应的Date对象
Date date = sdf.parse(dateFormat);
//输出这个Date对象
System.out.println(date);
/*
* 反向操作,我们也可以将一个Date对象转换为它所描述的日期的字符串。同样,转换出来
* 的字符串格式是SimpleDateFormat创建的时候设置的格式
*/
Date now = new Date();//创建用于描述当前系统时间的Date
String nowStr = sdf.format(now );
System.out.println(nowStr);//2013-05-14
/*
* 将当前系统时间转换为2012/05/14 17:05:22的效果
*/
SimpleDateFormat format2 = new SimpleDateFormat("yyyy/MM/dd hh:mm:ss");
nowStr = format2.format(now);
System.out.println(nowStr);
}
}
package day02;
import java.text.DateFormat;
import java.util.Date;
import java.util.Locale;
/*
* DateFormat
* 这个类是SimpleDateFormat的父类
*/
public class TestDateFormat {
public static void main(String[] args) {
//创建描述当前系统时间的Date对象
Date now = new Date();
/*
* 创建用于将Date对象转换为日期格式的字符串的DateFormat
* 创建DateFormat对象的实例使用静态方法
* getDateInstance(style,aLocale);
* style为输出日期格式的样式:DateFormat有对应的常量
* aLocale为输出的地区信息。影响字符串的语言和表现形式
* 例如:老美喜欢描述日期为:月日年
* 我们喜欢描述日期为:年月日
*/
//创建用于将Date对象转换为日期格式的字符串的DateFormat
DateFormat format = DateFormat.getDateInstance(DateFormat.MEDIUM,Locale.CHINA);
System.out.println(format.format(now));
}
}