java对时间日期的处理
2013-11-14 21:18
399 查看
一、与时间日期有关的类。
java.util.Date。实现类,其对象具有时间、日期组件。
java.util.Calendar。抽象类,其对象具有时间、日期组件。
java.sql.Date。实现类,其对象具有日期组件。
java.sql.Time。实现类,其对象具有时间组件。
java.sql.Timestamp。实现类,其对象具有时间日期组件。
java.text.DateFormat。抽象类,其对象格式化时间日期。
java.text.SimpleDateFormat.继承DateFormat,
二、各个类使用介绍:
①java.util.Date
创建对象:
运行结果:
输出结果时,通过SimpleDateFormat类,进行格式化输出。
常用方法:
另外还有getTime()/setTime(long time)
②java.util.Calender
该类的继承结构:
Calendar为抽象类,创建方式如下:
public static void main(String[] args) {
Calendar cd = Calendar.getInstance();//构造函数式受保护的,无访问权限,通过提供的静态方法来实例化
if(cd instanceof GregorianCalendar){
System.out.println("yes");
}
}
输出结果:yes
疑问:getInstance()是Calendar的非抽象方法(抽象方法不能被static关键字修饰)。那么Calendar.getInstance()得到的实例是如何创建的呢?如果是Calendar来创建的那么它为何会是子类的实例 呢?
查看源码:
public static Calendar getInstance()
{
Calendar cal = createCalendar(TimeZone.getDefaultRef(), Locale.getDefault(Locale.Category.FORMAT));
cal.sharedZone = true;
return cal;
}
接着查看createCalendar()方法:
private static Calendar createCalendar(TimeZone zone,
Locale aLocale)
{
Calendar cal = null;
String caltype = aLocale.getUnicodeLocaleType("ca");
if (caltype == null) {
// Calendar type is not specified.
// If the specified locale is a Thai locale,
// returns a BuddhistCalendar instance.
if ("th".equals(aLocale.getLanguage())
&& ("TH".equals(aLocale.getCountry()))) {
cal = new BuddhistCalendar(zone, aLocale);
} else {
cal = new GregorianCalendar(zone, aLocale);
}
} else if (caltype.equals("japanese")) {
cal = new JapaneseImperialCalendar(zone, aLocale);
} else if (caltype.equals("buddhist")) {
cal = new BuddhistCalendar(zone, aLocale);
} else {
// Unsupported calendar type.
// Use Gregorian calendar as a fallback.
cal = new GregorianCalendar(zone, aLocale);
}
return cal;
}
我们可以看到Calendar有好几个子类,这里我们调用的是GregorianCalendar类的构造函数生成,所以会打印yes.【^_^,这里尽然直接在父类中创建了子类】
Calendar与Date的相互转换:
public static void main(String[] args) {
Calendar cd = Calendar.getInstance();//构造函数式受保护的,无访问权限,通过提供的静态方法来实例化
Date date = cd.getTime();
Calendar cd2 = Calendar.getInstance();
cd2.setTime(date);//Calendar中没有参数为Date的构造函数
}Calendar的常用常量:
public static void main(String[] args) {
Calendar cd = Calendar.getInstance();//构造函数式受保护的,无访问权限,通过提供的静态方法来实例化
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss EEE");
System.out.println(sdf.format(cd.getTime()));//2013-11-14 21:16:21 星期四
//当前年
System.out.println(cd.get(Calendar.YEAR));//2013
//当前月,从零开始
System.out.println(cd.get(Calendar.MONTH)+1);//11
//当前月第几天,从1开始;与Calendar.Date等价
System.out.println(cd.get(Calendar.DAY_OF_MONTH));//14
//当前时钟24
System.out.println(cd.get(Calendar.HOUR_OF_DAY));//21
//当前时钟12
System.out.println(cd.get(Calendar.HOUR));//9
//当前分
System.out.println(cd.get(Calendar.MINUTE));//16
//当前秒
System.out.println(cd.get(Calendar.SECOND));//21
//一周的星期几(1-7)表示(星期日-星期六)
System.out.println(cd.get(Calendar.DAY_OF_WEEK)-1);//4
//当前月的星期数
System.out.println(cd.get(Calendar.WEEK_OF_MONTH));//3
//当前月的第几个星期;从1开始
System.out.println(cd.get(Calendar.DAY_OF_WEEK_IN_MONTH));//2
//当前年的第几天
System.out.println(cd.get(Calendar.DAY_OF_YEAR));//318
}
二、使用实例:
运行结果:
注:在进行数据库时间日期操作时,使用java.sql.Timestamp类
三、常见操作:
①将字符串转换成时间
②将时间转换成我们习惯的格式输出
③TimeStamp 与 java.util.Date转化
运行结果:
java.util.Date。实现类,其对象具有时间、日期组件。
java.util.Calendar。抽象类,其对象具有时间、日期组件。
java.sql.Date。实现类,其对象具有日期组件。
java.sql.Time。实现类,其对象具有时间组件。
java.sql.Timestamp。实现类,其对象具有时间日期组件。
java.text.DateFormat。抽象类,其对象格式化时间日期。
java.text.SimpleDateFormat.继承DateFormat,
二、各个类使用介绍:
①java.util.Date
创建对象:
public static void main(String[] args) throws ParseException { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date date = new Date(); System.out.println(sdf.format(date)); Date date2 = new Date(System.currentTimeMillis()); System.out.println(sdf.format(date2)); }
运行结果:
输出结果时,通过SimpleDateFormat类,进行格式化输出。
常用方法:
另外还有getTime()/setTime(long time)
②java.util.Calender
该类的继承结构:
Calendar为抽象类,创建方式如下:
public static void main(String[] args) {
Calendar cd = Calendar.getInstance();//构造函数式受保护的,无访问权限,通过提供的静态方法来实例化
if(cd instanceof GregorianCalendar){
System.out.println("yes");
}
}
输出结果:yes
疑问:getInstance()是Calendar的非抽象方法(抽象方法不能被static关键字修饰)。那么Calendar.getInstance()得到的实例是如何创建的呢?如果是Calendar来创建的那么它为何会是子类的实例 呢?
查看源码:
public static Calendar getInstance()
{
Calendar cal = createCalendar(TimeZone.getDefaultRef(), Locale.getDefault(Locale.Category.FORMAT));
cal.sharedZone = true;
return cal;
}
接着查看createCalendar()方法:
private static Calendar createCalendar(TimeZone zone,
Locale aLocale)
{
Calendar cal = null;
String caltype = aLocale.getUnicodeLocaleType("ca");
if (caltype == null) {
// Calendar type is not specified.
// If the specified locale is a Thai locale,
// returns a BuddhistCalendar instance.
if ("th".equals(aLocale.getLanguage())
&& ("TH".equals(aLocale.getCountry()))) {
cal = new BuddhistCalendar(zone, aLocale);
} else {
cal = new GregorianCalendar(zone, aLocale);
}
} else if (caltype.equals("japanese")) {
cal = new JapaneseImperialCalendar(zone, aLocale);
} else if (caltype.equals("buddhist")) {
cal = new BuddhistCalendar(zone, aLocale);
} else {
// Unsupported calendar type.
// Use Gregorian calendar as a fallback.
cal = new GregorianCalendar(zone, aLocale);
}
return cal;
}
我们可以看到Calendar有好几个子类,这里我们调用的是GregorianCalendar类的构造函数生成,所以会打印yes.【^_^,这里尽然直接在父类中创建了子类】
Calendar与Date的相互转换:
public static void main(String[] args) {
Calendar cd = Calendar.getInstance();//构造函数式受保护的,无访问权限,通过提供的静态方法来实例化
Date date = cd.getTime();
Calendar cd2 = Calendar.getInstance();
cd2.setTime(date);//Calendar中没有参数为Date的构造函数
}Calendar的常用常量:
public static void main(String[] args) {
Calendar cd = Calendar.getInstance();//构造函数式受保护的,无访问权限,通过提供的静态方法来实例化
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss EEE");
System.out.println(sdf.format(cd.getTime()));//2013-11-14 21:16:21 星期四
//当前年
System.out.println(cd.get(Calendar.YEAR));//2013
//当前月,从零开始
System.out.println(cd.get(Calendar.MONTH)+1);//11
//当前月第几天,从1开始;与Calendar.Date等价
System.out.println(cd.get(Calendar.DAY_OF_MONTH));//14
//当前时钟24
System.out.println(cd.get(Calendar.HOUR_OF_DAY));//21
//当前时钟12
System.out.println(cd.get(Calendar.HOUR));//9
//当前分
System.out.println(cd.get(Calendar.MINUTE));//16
//当前秒
System.out.println(cd.get(Calendar.SECOND));//21
//一周的星期几(1-7)表示(星期日-星期六)
System.out.println(cd.get(Calendar.DAY_OF_WEEK)-1);//4
//当前月的星期数
System.out.println(cd.get(Calendar.WEEK_OF_MONTH));//3
//当前月的第几个星期;从1开始
System.out.println(cd.get(Calendar.DAY_OF_WEEK_IN_MONTH));//2
//当前年的第几天
System.out.println(cd.get(Calendar.DAY_OF_YEAR));//318
}
二、使用实例:
public static void main(String[] args) { java.sql.Date sqlDate = new java.sql.Date(System.currentTimeMillis()); System.out.println(sqlDate.toString()); java.sql.Time sqlTime = new java.sql.Time(System.currentTimeMillis()); System.out.println(sqlTime.toString()); java.sql.Timestamp sqlTimestamp = new java.sql.Timestamp(System.currentTimeMillis()); System.out.println(sqlTimestamp.toString()); java.util.Date utilDate = new java.util.Date(System.currentTimeMillis()); System.out.println(utilDate.toString()); java.util.Calendar cl = java.util.Calendar.getInstance(); System.out.println(cl.getTime().toString()); }
运行结果:
注:在进行数据库时间日期操作时,使用java.sql.Timestamp类
三、常见操作:
①将字符串转换成时间
②将时间转换成我们习惯的格式输出
③TimeStamp 与 java.util.Date转化
public static void main(String[] args) throws ParseException { String time = "1990-12-12 23:12:24"; DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date d = df.parse(time); System.out.println(d); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); System.out.println(sdf.format(d)); Timestamp ts = new Timestamp(d.getTime()); System.out.println(ts); }
运行结果:
相关文章推荐
- 如何在Java 8中愉快地处理日期和时间
- Java处理日期时间常用方法(可用于公用方法以供调用)
- java处理日期时间 相加减
- Java中对时间、日期的处理
- Java日期时间处理
- Java DateTime 日期时间处理
- JAVA处理日期(Date)时间(Time)以及相关类的介绍
- java中的日期时间处理
- java日期时间小处理
- java中日期和时间的处理
- Java中时间和日期的处理
- JAVA处理日期时间常用方法
- Java中的时间日期处理
- JAVA面试题解惑系列(七)——日期和时间的处理
- Java处理日期,时间,以及日期时间的类
- java日期、时间以及数据库映射处理
- java日期时间处理工具类封装
- Java获取视频的时长——日期时间处理
- 在Java 8中如何处理日期和时间
- java处理日期时间 相加减