2

如何在不使用任何预定义类或库的情况下在 java 中获取系统的当前日期和时间?我实际上正在从头开始制作我自己的日期 ADT,如 java.util.Date 或 Java.util.Calendar。但我无法找到获取系统日期和时间的方法,比如如果他输入当前年龄来计算某人的年龄。在某种程度上,我想了解 Date 或 Calendar 类的开发人员如何实际实现它。有没有办法让我看到 java.util 包中定义的 Date 和 Calendar 类的代码。

4

2 回答 2

3

System.currentTimeMillis(),不在java.util——那是你要找的吗?然后,您必须编写代码来计算出该值(自 unix 纪元以来的毫秒数)在年等方面的含义 - 您应该考虑时区和日历系统。

我个人会避免尝试编写自己的日期/时间包,除非它只是为了好玩。java.util.Date/Calendar很糟糕,但Joda Time要好得多,还有即将推出的JSR 310

有没有办法让我看到 java.util 包中定义的 Date 和 Calendar 类的代码。

当然 - 当您安装 JDK 时,您应该可以选择安装标准库的源代码副本,通常在src.zip. 或者,您可以访问openjdk.java.net并查看那里。

实际上我根本不想使用任何预定义的功能。

然后你必须使用JNI来进行底层系统调用,这对我来说似乎毫无意义——因为它基本上就是System.currentTimeMillis这样做的。如果您正在尝试学习 JNI,那很好,但它与日期/时间并没有太大关系。

当然,如果您对准确的时间而不是*系统时间感兴趣,您可以实现一个NTP客户端。

于 2012-09-16T16:28:28.887 回答
1

使用System.currentTimeMillis()

返回当前时间与 UTC 时间 1970 年 1 月 1 日午夜之间的差异,以毫秒为单位。

至于and的源代码java.util.Datejava.util.Calendar你可以直接从http://jdk7.java.net/source.htmldocjar.com下载源代码,也可以在或这里在线查看。

于 2012-09-16T16:27:57.983 回答