由于本人水平所限,这里只讨论java中对日期的几个简单类:
1.java.util.Date
2.java.text.DateFormat(Abstract),java.text.SimpleDateFormat
3.java.util.Calendar(Abstract),java.util。GregorianCalendar
首先看一下Date类,Date中只提供了几个获得本地时间的方法,具体用法见下:
import java.util.Date;
public class DateFormatTest {
public DateFormatTest() {
}
public static void main(String[] args) {
Date dt=new Date();
String localeString=dt.toLocaleString();
String gmtString=dt.toGMTString();
System.out.println(localeString);
System.out.println(gmtString);
System.out.println(dt.getTime());
System.out.println(System.currentTimeMillis());
}
}输出结果为:
2004-12-31 9:34:04
31 Dec 2004 01:34:04 GMT
1104456844281
1104456844500
从结果中可以看到,dt.getTime()与System.currentTimeMillis()这两个方法得到的时间是相同的。因为Date的构造函数中调用了System.currentTimeMillis()方法来从系统获得当前时间。其结果实际上是从1970年1月1日开始到当前所经历的毫秒数。
以下的例子展示的是一个简单的格式化日期的代码:
import java.text.*;
import java.util.Locale;
import java.util.Date;
public class DateFormatTest {
public DateFormatTest() {
}
public static void main(String[] args) {
DateFormat df=DateFormat.getDateInstance();
SimpleDateFormat defaultSDF=new SimpleDateFormat();
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
System.out.println(new Date());
System.out.println(df.format(new Date()));
System.out.println(defaultSDF.format(new Date()));
System.out.println(sdf.format(new Date()));
}
}
输出结果是:
Fri Dec 31 09:48:19 CST 2004
2004-12-31
04-12-31上午9:48
2004-12-31
SimpleDateFormat的构造函数中String中字符的含义列如下表:
Letter Date or Time Component PresentationExamples
G Era designator Text AD
y Year Year 1996; 96
M Month in year Month July; Jul; 07
w Week in year Number 27
W Week in month Number 2
DDay in year Number 189
d Day in month Number 10
FDay of week in month Number 2
EDay in week Text Tuesday; Tue
aAm/pm marker Text PM
HHour in day (0-23) Number 0
k Hour in day (1-24) Number 24
KHour in am/pm (0-11) Number 0
hHour in am/pm (1-12) Number 12
m Minute in hour Number 30
sSecond in minute Number 55
S Millisecond Number 978
z Time zone General time zone PacificStandard Time; PST; GMT-08:00
Z Time zone RFC 822 time zon
上面展示的例子是将Date格式化成我们想要的格式,通常还会遇到需要将有些已经格式好的String再解析成Date的问题。在下面的文章中将会讲到。
import java.text.*;
import java.util.Locale;
import java.util.Date;
public class DateFormatTest {
public DateFormatTest() {
}
public static void main(String[] args) {
String dateToparse="30-12-2004";
SimpleDateFormat sdf=new SimpleDateFormat("dd-MM-yyyy");
Date dt=new Date();
try{
dt=sdf.parse(dateToparse);
System.out.print(dt);
}catch(Exception e){
e.printStackTrace();
}
}
}