河 南 洛 阳 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 年 时 间 问 题。
闽公网安备 35060202000074号