你可以使用 SimpleDateFormat 类,如果日期格式不对,会产生异常。import java.text.*;
import java.util.*;public class TestDate {
public static void main(String[] args) {
String dStr = "2001.12.12-08.23.21";
Date d = null;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd-HH.mm.ss");
try {
d = sdf.parse(dStr);
} catch (ParseException pe) {
System.out.println(pe.getMessage());
}
System.out.println(d);
System.out.println(d.getTime());
}
} 在 java.text 包中找到那个 SimpleDateFormat 类,给它一个模板,可以 parse 成一个 Date,然后使用 Date 类的 getItme() 方法,可以得到一个 Long 数据。模板定义如下:
y 年号,如 1996
M 月份,如 July 或者 07
d 月中第几天,如 12
H 小时(24制),如 0、17
m 分钟,如 32
s 钞钟,如55
S 微钞,如978
E 星期几,如 Tuesday
D 一年中的第几天,如 189
w week in year (Number) 27
W week in month (Number) 2
a am/pm er (Text) PM
k hour in day (1~24) (Number) 24
K hour in am/pm (0~11) (Number) 0
z time zone (Text) Pacific Standard Time
' escape for text (Delimiter)
'' single quote (Literal) '
import java.util.*;public class TestDate {
public static void main(String[] args) {
String dStr = "2001.12.12-08.23.21";
Date d = null;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd-HH.mm.ss");
try {
d = sdf.parse(dStr);
} catch (ParseException pe) {
System.out.println(pe.getMessage());
}
System.out.println(d);
System.out.println(d.getTime());
}
} 在 java.text 包中找到那个 SimpleDateFormat 类,给它一个模板,可以 parse 成一个 Date,然后使用 Date 类的 getItme() 方法,可以得到一个 Long 数据。模板定义如下:
y 年号,如 1996
M 月份,如 July 或者 07
d 月中第几天,如 12
H 小时(24制),如 0、17
m 分钟,如 32
s 钞钟,如55
S 微钞,如978
E 星期几,如 Tuesday
D 一年中的第几天,如 189
w week in year (Number) 27
W week in month (Number) 2
a am/pm er (Text) PM
k hour in day (1~24) (Number) 24
K hour in am/pm (0~11) (Number) 0
z time zone (Text) Pacific Standard Time
' escape for text (Delimiter)
'' single quote (Literal) '
/**
* 读入一个有关时间安排的文本文件;睡眠直至预定时间,然后发出嘟嘟声
*/
import java.io.*;
import java.text.*;
import java.util.*;
import javax.swing.*;public class ReminderService //定义RemiderService类
{
class Item //内部类
{
Date due;
String message;
Item(Date d, String m)
{
due = d;
message = m;
}
} ArrayList l = new ArrayList();//数组列表 public static void main(String argv[ ]) throws IOException
{
ReminderService rs = new ReminderService();
rs.load();//调用load()方法
rs.run();//调用run()方法
} public void load() throws IOException //定义load()方法,用来读取信息
{
BufferedReader is =
new BufferedReader( new FileReader("ReminderService.txt") );
SimpleDateFormat formatter =
new SimpleDateFormat ("yyyy.MM.dd HH.mm.ss" );
String aLine;
while ((aLine = is.readLine()) != null) //判断是否可写
{
try
{
Date date = formatter.parse(aLine); //获取Date
String mesg = aLine.substring(0); //获取String
l.add(new Item(date, mesg)); //把Item(Date,String)加到数组中
}
catch (ParseException pe)
{
System.out.println(pe.getMessage());
}
}
}
//定义run()方法,根据不同情况,进行相应的操作并且显示不同的信息。
public void run()
{
System.out.println("ReminderService: Starting at "+ new Date());
while (!l.isEmpty())
{
Date d = new Date();
Item i = (Item) l.get(0);
long interval = i.due.getTime() - d.getTime();
if (interval>0)
{//判断所设定的时间是否过期 System.out.println("Sleeping until" + i.due);
try
{ Thread.sleep(interval); }
catch (InterruptedException e) { System.exit(1);//抛出异常
}
message(i.due + ":" + i.message); }
else//如果设定的时间过期,则显示另一个信息
{
message("MISSED" + i.message + "at" + i.due);
}
l.remove(0);
}
System.exit(0);
}
//定义message()方法,用来显示信息
void message(String message)
{
System.out.println("007 " + message);
JOptionPane.showMessageDialog(null,
message,
"定时报警", // 标题栏
JOptionPane.WARNING_MESSAGE); // 图标
}}我的文本文件ReminderService.txt的内容是:
2004.12.9 14:28:50
2002.10.01 14:35:45
2003.7.06 14:28:10
2004.11.2 10:11:12为什么会出现异常呢?
我的日期格式是正确的呀!