util Date
现在已经不建议使用了,因为不易实现国际化,在JDK1.1开始,应该使用java.util.Calendar(抽象类)来代替
父类
java.lang.Object
子类
java.sql.Date
java.sql.Time
java.sql.Timestamp
构造方法
Date()
其实此构造器并不是没有参数的,底层初始化的时候是调用了兄弟构造器
public Date() {
this(System.currentTimeMillis());
}
传入的参数是自1970年1月1日0:0:0 GTM 到现在经过的毫秒数,也就是当前时间
Date(long date) 自1970年1月1日0:0:0 GTM 经过date毫秒数的时间
util Date常用方法
String toString()
把此对象转换为以下形式的字符串格式为dow mon dd hh:mm:ss zzz yyyy
dow 是一周中的某一天 Sun,Mon,Tue,Wed,Thu,Fri,Sat
mon 是月份 Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec
dd 是一月中的某一天 01 至 31
hh 是一天中的小时 00 至 23
mm 是小时中的分钟 00 至 59
ss 是分钟中的秒数 00 至 61
zzz 是时区
yyyy 是年份
void setTime(long time)
自1970年1月1日0:0:0 GTM 经过date毫秒数的时间
long getTime()
返回自1970年1月1日0:0:0 GTM 到当前时间的毫秒数
boolean equals(Object obj)
比较两个日期是否相等,比较的是两个日期的getTime()
int compareTo(Date anotherDate)
比较两个日期的顺序,两个日期等于返回0
date小于anotherDate,返回-1
date大于anotherDate,返回1
public int compareTo(Date anotherDate) {
long a = this.getTime();
long b = anotherDate.getTime();
return a < b ? -1 : (a == b ? 0 : 1);
}
boolean after(Date anotherDate)
date大于anotherDate返回false
date小于anotherDate返回true
boolean before(Date anotherDate)
date大于anotherDate返回true
date小于anotherDate返回false
案例
package com.itlwc;
import java.util.Date;
public class Test {
public static void main(String[] args) {
MyDate d1 = new MyDate(100);
MyDate d2 = new MyDate(200);
System.out.println(d1.compareTo(d2));
System.out.println(d1.after(d2));
System.out.println(d1.before(d2));
System.out.println(d1.equals(d2));
}
}
class MyDate extends Date {
private static final long serialVersionUID = 1L;
public MyDate() {
this(System.currentTimeMillis());
}
public MyDate(long date) {
super(date);
}
@Override
public int compareTo(Date anotherDate) {
long a = this.getTime();
long b = anotherDate.getTime();
return a < b ? -1 : (a == b ? 0 : 1);
}
@Override
public boolean after(Date anotherDate) {
return this.getTime() > anotherDate.getTime();
}
@Override
public boolean before(Date anotherDate) {
return this.getTime() < anotherDate.getTime();
}
@Override
public boolean equals(Object obj) {
return obj instanceof Date && this.getTime() == ((Date) obj).getTime();
}
}
/*
打印结果:
-1
false
true
false
*/
sql Date
它允许JDBC将毫秒值标识为SQL DATE值
构造器
Date(long date) 使用给定毫秒时间值构造Date对象
常用方法
static Date valueOf(String s) 使用格式 yyyy-mm-dd
sql Time
它允许JDBC将该类标识为SQL TIME值
构造器
Time(long time)
使用毫秒时间值构造Time对象
常用方法
static Time valueOf(String s)
使用格式 hh:mm:ss
sql Timestamp
它允许JDBC将毫秒值标识为SQL TIMESTAMP值
构造器
Timestamp(long time)
使用毫秒时间值构造Timestamp对象
常用方法
static Timestamp valueOf(String s)
使用格式 yyyy-mm-dd hh:mm:ss.fffffffff
int getNanos()
获取Timestamp对象的纳秒
void setNanos(int n)
设置Timestamp 对象的纳秒
util Date,sql Date,sql Time,sql Timestamp区别
java.util.Date 日期格式为:年月日时分秒
java.sql.Date 日期格式为:年月日(只存储日期数据不存储时间数据)
java.sql.Time 日期格式为:时分秒
java.sql.Timestamp 日期格式为:年月日时分秒纳秒(毫微秒)
案例
package com.itlwc;
public class Test {
public static void main(String[] args) {
java.sql.Date date = java.sql.Date.valueOf("2013-05-24");
System.out.println(date);
java.sql.Time time = java.sql.Time.valueOf("14:06:27");
System.out.println(time);
java.sql.Timestamp timestamp = java.sql.Timestamp
.valueOf(("2013-05-24 14:06:27.186"));
System.out.println(timestamp);
}
}
/*
打印结果:
2013-05-24
14:06:27
2013-05-24 14:06:27.186
*/
日期类型之间的转换
将字符串日期转型为util Date
package com.itlwc;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Test {
public static void main(String[] args) {
String str = "1987-04-09";
getUtilDate(str);
}
public static Date getUtilDate(String str) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date = null;
try {
date = sdf.parse(str);
} catch (ParseException e) {
e.printStackTrace();
}
return date;
}
}
将字符串日期转型为sql Date
package com.itlwc;
import java.text.ParseException;
import java.text.SimpleDateFormat;
public class Test {
public static void main(String[] args) {
String str = "1987-04-09";
Test.getSqlDate(str);
}
public static java.sql.Date getSqlDate(String str) {
// 先转型为java.util.Date
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
java.util.Date date = null;
try {
date = sdf.parse(str);
} catch (ParseException e) {
e.printStackTrace();
}
// 在转型为java.sql.Date
java.sql.Date sqlDate = new java.sql.Date(date.getTime());
return sqlDate;
}
}
将字符串日期转型为sql Timestamp
package com.itlwc;
import java.sql.Timestamp;
import java.text.ParseException;
import java.text.SimpleDateFormat;
public class Test {
public static void main(String[] args) {
String str = "1987-04-09";
Test.getTimestamp(str);
}
public static Timestamp getTimestamp(String str) {
// 先转型为java.util.Date
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
java.util.Date date = null;
try {
date = sdf.parse(str);
} catch (ParseException e) {
e.printStackTrace();
}
// 在转型为java.sql.Timestamp
Timestamp ts = new Timestamp(date.getTime());
return ts;
}
}
将util Date转型为字符串的日期
package com.itlwc;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Test {
public static void main(String[] args) {
Test.getString();
}
public static String getString() {
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String str = sdf.format(date);
return str;
}
}
将sql Date转型为字符串的日期
package com.itlwc;
public class Test {
public static void main(String[] args) {
Test.getString();
}
public static String getString() {
java.sql.Date d = new java.sql.Date(System.currentTimeMillis());
return d.toString();
}
}
将sql Timestamp转型为字符串
package com.itlwc;
import java.sql.Timestamp;
import java.util.Date;
public class Test {
public static void main(String[] args) {
Test.getString();
}
public static String getString() {
java.util.Date date = new Date();
Timestamp ts = new Timestamp(date.getTime());
return ts.toString();
}
}
util Calendar
Calendar 类是一个抽象类,一般使用GregorianCalendar子类
创建2013年5月27日10:40:59秒
new GregorianCalendar(2013,4,27,10,40,59);
或者
new GregorianCalendar(2013,Calendar.MAY,27,10,40,59);
或者
Calendar cal = new GregorianCalendar();
cal.set(Calendar.YEAR,2013);
cal.set(Calendar.MONTH,Calendar.MAY);
cal.set(Calendar.DAY_OF_MONTH,27);
cal.set(Calendar.DAY_OF_WEEK,2);
cal.set(Calendar.HOUR_OF_DAY,10);
cal.set(Calendar.MINUTE,40);
cal.set(Calendar.SECOND,59);
创建当前时间
Calendar cal = new GregorianCalendar();
System.out.println("年: " + cal.get(Calendar.YEAR));
System.out.println("月: " + cal.get(Calendar.MONTH));
System.out.println("本年第: " + cal.get(Calendar.DAY_OF_YEAR)+" 天");
System.out.println("日: " + cal.get(Calendar.DATE));
System.out.println("日: " + cal.get(Calendar.DAY_OF_MONTH));
System.out.println("本年第 " + cal.get(Calendar.WEEK_OF_YEAR) + " 个星期");
System.out.println("本月第: " + cal.get(Calendar.WEEK_OF_MONTH) + " 个星期");
System.out.println("本周第: " + cal.get(Calendar.DAY_OF_WEEK) + " 天");
System.out.println("时: " + cal.get(Calendar.HOUR));
System.out.println("时: " + cal.get(Calendar.HOUR_OF_DAY));
System.out.println("分: " + cal.get(Calendar.MINUTE));
System.out.println("秒: " + cal.get(Calendar.SECOND));
System.out.println("毫秒: " + cal.get(Calendar.MILLISECOND));
字段摘要
上午,下午
System.out.println(Calendar.AM);
System.out.println(Calendar.PM);
System.out.println(Calendar.AM_PM);
星期
System.out.println("星期日: " + Calendar.SUNDAY);
System.out.println("星期一: " + Calendar.MONDAY);
System.out.println("星期二: " + Calendar.TUESDAY);
System.out.println("星期三: " + Calendar.WEDNESDAY);
System.out.println("星期四: " + Calendar.THURSDAY);
System.out.println("星期五: " + Calendar.FRIDAY);
System.out.println("星期六: " + Calendar.SATURDAY);
月份
System.out.println("一月份: " + Calendar.JANUARY);
System.out.println("二月份: " + Calendar.FEBRUARY);
System.out.println("三月份: " + Calendar.MARCH);
System.out.println("四月份: " + Calendar.APRIL);
System.out.println("五月份: " + Calendar.MAY);
System.out.println("六月份: " + Calendar.JUNE);
System.out.println("七月份: " + Calendar.JULY);
System.out.println("八月份: " + Calendar.AUGUST);
System.out.println("九月份: " + Calendar.SEPTEMBER);
System.out.println("十月份: " + Calendar.OCTOBER);
System.out.println("十一月份: " + Calendar.NOVEMBER);
System.out.println("十二份: " + Calendar.DECEMBER);
System.out.println("十三份: " + Calendar.UNDECIMBER);