Date:
Date类位于java.util包下,由于存在千年虫问题,现在Date的大部分方法都已经不再使用。目前使用的主要有long getTime()方法获取给定Date时间对应的毫秒值以及Date getTime(long sec)方法根据给定时间设置为Date对象或者直接使用构造器new Date(long sec)
public class DateDemo {
public static void main(String[] args) {
/**
* 获取当前时间
*/
Date date = new Date();
System.out.println(date);
/**
* 获取当前时间的毫秒值
*/
long sec = date.getTime();
System.out.println(sec);
/**
* 通过一个毫秒值让Date去描述这个对象
*/
date.setTime(sec);
System.out.println(date);
}
}
SimpleDateFormat
SimpleDateFormat类位于java.text包下,是java.txt.DateFormat的子
java.lang.Object
--java.text.Format
--java.text.DateFormat
--java.text.SimpleDateFormat
|
经常使用SimpleDateFormat类下的format(Date date)方法对已知的Date对象进行格式化。
/**
* 将Date对象格式化
* @author Pursuit.
* @version 2013-11-22 上午8:42:18
*/
public class SimpleDateFormatFormat {
public static void main(String[] args) {
Date now = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 kk:mm:ss E");
//对应格式 2013年11月22日 08:47:14 星期五
String str = sdf.format(now);
System.out.println(str);
}
}
经常使用SimpleDateFormat类下的Date parse(String str)方法对已知的String对象进行转换。
/**
* 使用SimpleDateFormat
* 进行字符串按照指定格式解析为Date对象
* @author Administrator
*
*/
public class SimpleDateFormatDemo2 {
public static void main(String[] args) throws ParseException {
//定义一个日期的字符串
String str = "2013/12/30 15:22:45";
/**
* 2013/12/30 15:22:45"
* yyyy/MM/dd HH:mm:ss
*/
SimpleDateFormat sdf =
new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
/**
* Date parse(String str)
* 将给定的字符串按照给定的格式解析成Date对象
*/
Date date = sdf.parse(str);
System.out.println(date);
}
}
Calender:
Calendar位于java.util包下,目前使用较多的日期类。
public class CalendarDemo {
public static void main(String[] args) {
/**
* 根据当前系统地区创建Calendar实例
* 默认创建出来的Calendar描述的是当前系统时间
* java.util.Calendar
*/
Calendar calendar = Calendar.getInstance();
// System.out.println(calendar);
/**
* Date getTime()
* 以Date形式描述当前Calendar所描述的时间
*/
Date date = calendar.getTime();
/**
* void setTime(Date date)
* 让当前Calendar描述给定的Date对象所描述的时间
*/ calendar.setTime(new Date());
System.out.println(date);
}
}
设置和获取时间
/**
* 设置和获取时间
* @author Administrator
*
*/
public class CalendarDemo2 {
public static void main(String[] args) {
//创建当前系统时间的日历类
Calendar calendar = Calendar.getInstance();
//输出时间
System.out.println(calendar.getTime());
/**
* 将当前时间中的年设置为1995
*/
calendar.set(Calendar.YEAR, 1995);
//输出时间
System.out.println(calendar.getTime());
/**
* 将当前时间中的月设置为5月
* 月在Calendar中有对应的常量
* 若写数字,0表示1月,以此类推
*/
calendar.set(Calendar.MONTH, 4);
//输出时间
System.out.println(calendar.getTime());
/**
* 将当前时间中的日设置为5号
* Calendar.DATE 表示的是月中的某一天
* Calendar.DAY_OF_MONTH 和DATE常量一摸一样
*
* Calendar.DAY_OF_WEEK 表示星期中的某一天
*
* Calendar.DAY_OF_YEAR 表示年中的某一天
*
*/
calendar.set(Calendar.DATE, 5);
//输出时间
System.out.println(calendar.getTime());
/**
* Calendar.HOUR 表示12小时制的小时 0-11
* Calendar.HOUR_OF_DAY 表示24小时制的小时
*
*/
calendar.set(Calendar.HOUR, 4);
//输出时间
System.out.println(calendar.getTime());
/**
* 获取当前Calendar中的某一个时间单位的值
*/
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH);
int day = calendar.get(Calendar.DAY_OF_MONTH);
System.out.println("现在是" + year + "年");
System.out.println(month + 1 + "月");
System.out.println(day + "日");
/**
* 对于星期而言,1表示星期日,2表示星期一,以此类推
*/
int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
System.out.println(
"星期" +
( dayOfWeek==1 ? 7 : dayOfWeek-1 )
);
/**
* 查看1995年的5月5号是一年中的第几天
*/
int dayOfYear = calendar.get(Calendar.DAY_OF_YEAR);
System.out.println("是一年中的第"+dayOfYear+"天");
}
}
设置时间值溢出时系统会自动增加至下一月、下一年
import java.util.Calendar;
/**
* Calendar设置时间的溢出问题
* @author Administrator
*
*/
public class CalendarDemo3 {
public static void main(String[] args) {
Calendar calendar = Calendar.getInstance();
/**
* 当设置的值超过了该值允许的最大值时,会将相应的时间
* 单位进行进位,这里就会对月进行进位
*/
calendar.set(Calendar.DAY_OF_MONTH, 32);
//Mon Dec 02 08:55:03 CST 2013
System.out.println(calendar.getTime());
}
}
总结
String到Date以及Date到String使用的是SimpleDateFormat类
Date到Calendar以及Calendar到Date使用的是Calendar下的setTime(Date date)以及Clendar下的Date getTime()方法