java.util.Date与java.text.SimpleDateFormat
格式化日期
Date date = new Date();
// 使用指定的格式格式化日期
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
System.out.println(sdf.format(date));
获取当前时间日期对象
/**
* 构建一个日期对象,默认为当前系统时间
*/
public Date() {
this(System.currentTimeMillis());
}
获取指定时间的日期对象
/**
* 构建一个日期对象,并初始化它所代表的自1970年1月1日以来的时间毫秒数
*/
public Date(long date) {
fastTime = date;
}
获取时间毫秒数
/**
* 获取自1970年1月1日开始至当前Date对象设定的时间的毫秒数
*/
public long getTime() {
return getTimeImpl();
}
比较日期
/**
* 检查当前日期是否在指定日期之前
*/
public boolean before(Date when) {
return getMillisOf(this) < getMillisOf(when);
}
/**
* 检查当前日期是否在指定日期之后
*/
public boolean after(Date when) {
return getMillisOf(this) > getMillisOf(when);
}
java.util.Calendar
获取年份、打印月份和星期
String[] months = new String[] { "一月", "二月", "三月", "四月", "五月", "六月",
"七月", "八月", "九月", "十月", "十一月", "十二月" };
String[] week = new String[] {null, "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};
Calendar c = Calendar.getInstance();
// 获取年份
int year = c.get(Calendar.YEAR);
// 获取月份,此月份从0开始(0-11),0表示一月;如果要以数字表示月份,那么+1
int month = c.get(Calendar.MONTH);
// 获取当前日期
int day = c.get(Calendar.DAY_OF_MONTH);
// 获取星期(1-7,1:星期日,7:星期六)
int dayWeek = c.get(Calendar.DAY_OF_WEEK);
System.out.println(months[month]);
System.out.println(week[dayWeek]);
设置日期
// c.set(年份, 月份, 日期),月份从0开始,0表示一月
c.set(2013, 2, 12);
单个属性设置,如设置月份为下个月
c.set(Calendar.MONTH, c.get(Calendar.MONTH) + 1);
Calendar类不能通过new创建类实例,类似于单例模式获取一个对象,但并非单例模式
获取Date对象
/**
* 返回一个时间毫秒数相等的Date实例
*/
public final Date getTime() {
return new Date(getTimeInMillis());
}
设置一个Date对象改变Calendar实例的值
/**
* 设置时间日期
*/
public final void setTime(Date date) {
setTimeInMillis(date.getTime());
}
获取时间毫秒数
/**
* 返回这个日历的毫秒数
*/
public long getTimeInMillis() {
if (!isTimeSet) {
updateTime();
}
return time;
}
设置时间,作用与setTime类似,setTime通过Date对象设置,这里直接设置时间毫秒数
/**
* 设置这个实例的时间毫秒数为指定的millis
*/
public void setTimeInMillis(long millis) {
// If we don't need to recalculate the calendar field values,
// do nothing.
if (time == millis && isTimeSet && areFieldsSet && areAllFieldsSet
&& (zone instanceof ZoneInfo) && !((ZoneInfo)zone).isDirty()) {
return;
}
time = millis;
isTimeSet = true;
areFieldsSet = false;
computeFields();
areAllFieldsSet = areFieldsSet = true;
}
获取指定属性的值
public int get(int field)
{
complete();
return internalGet(field);
}
设置指定属性的值
public void set(int field, int value)
{
// If the fields are partially normalized, calculate all the
// fields before changing any fields.
if (areFieldsSet && !areAllFieldsSet) {
computeFields();
}
internalSet(field, value);
isTimeSet = false;
areFieldsSet = false;
isSet[field] = true;
stamp[field] = nextStamp++;
if (nextStamp == Integer.MAX_VALUE) {
adjustStamp();
}
}
日期比较
/**
* 检查当前日期是否在指定日期之前
*/
public boolean before(Object when) {
return when instanceof Calendar
&& compareTo((Calendar)when) < 0;
}
/**
* 检查当前日期是否在指定日期之后
*/
public boolean after(Object when) {
return when instanceof Calendar
&& compareTo((Calendar)when) > 0;
}