河 南 洛 阳 041 信 箱 12 号 (471039) 李 真 文
--------------------------------------------------------------------------------
我 是 一 名 Java 开 发 和 研 究 人 员, 最 近 发 现 Java 存 在 2000 年 时 间 问题, 下 面 我 给 出 我 的 发 现, 愿 与 同 行 商 榷。
1. 年 份 只 支 持 后 两 位 数 字
JDK(Java 开 发 工 具) 中, 有 java.util 包, 其 中 包 含 一 个 Data 类, 用 于 描述 有 关 年、 月、 日、 星 期、 时、 分、 秒 等 时 间 信 息。 其 中, 年 份 只 支 持 后 两 位 数字, 这 表 现 在 其 构 造 器 (constrUCtor) 和 有 关 方 法 (method) 中。 下 面 给 出 程 序 示 例。
2. 程 序
我 采 用 的 计 算 机 是 AST/P75, 操 作 系 统 是 中 文 Windows 95, Java 开 发环 境 是 Symantec 公 司 的 Cafe 1.0。
2.1 Html 脚 本 (YearProblem.html)
< applet code=YearProblem.class width=300 height=300> < /applet>
2.2 Java 源 代 码 (YearProblem.java)
import java.applet.Applet;
import java.util.Date;
import java.awt.Graphics;
public class YearProblem extends Applet{
Date today;
Date date;
public void init() {
today = new Date(); // 创 建 当 天 的 日 期 对 象。
date = new Date(96, 10, 26); // 创 建 一 个 96 年 10 月 26 日 日 期 对 象。
// 注 意 : 将 96 变 成 1996 将 导 致 运 行 错误。
}
public void paint(Graphics g) {
int thisYear = today.getYear(); // 获 取 today 的 年 份 信 息
int thatYear = date.getYear(); // 获 取 date 的 年 份 信 息
g.drawString(“This year is” +thisYear+“.”, 100, 100);
g.drawString(“That year is´+thatYear+” .“, 100, 120);
}
3. 运 行 结 果
如 果 把 系 统 时 间 设 置 成 2000 年 10 月 26 日, 那 么, 上 述 today 的 年 份应 该 是 2000 年, date 的 年 份 是 96。 但 today 运 行 结 果 不 是 这 样, today 的 年 份 变 成 了 100! 这 就 是 2000 年 时 间 问 题。