不用方法获取当前时间
Get current time without methods
我正在尝试不用方法来做,以便更好地掌握概念。
我真的很亲近。我的时间数学似乎不对。我哪里不明白?
static void showCurrent(){
Date today = new Date();
long milliseconds = today.getTime(); // ex: 1651773923837
long seconds = milliseconds / 1000;
long minutes = seconds / 60;
long hours = minutes / 60;
long s = seconds % 60;
long m = minutes % 60;
long h = hours % 24;
System.out.printf("Date: %s, Time: %d\n", today.toString(), milliseconds);
System.out.println(h + ": " + m + ": " + s );
输出:
Date: Fri May 06 10:13:21 EDT 2022, Time: 1651846401839
14: 13: 21
根据 Javadoc 关于 Date::getTime:
Returns the number of milliseconds since January 1, 1970, 00:00:00 GMT represented by this Date object
重要的部分是“GMT”,它与您的时区不同:EDT,即... GMT - 4:00
避免遗留问题 date-time 类
java.util.Date
上的 toString
方法不幸 anti-feature 在生成文本时应用了 JVM 的当前默认时区。
永远不要使用 Date
。多年前被现代 java.time 类.
取代
Instant
捕捉当下。
Instant instant = Instant.now() ;
以标准 ISO 8601 格式生成文本。
String output = instant.toString() ;
获取自 1970 年第一个时刻的纪元参考以来的毫秒数,与 UTC 的偏移量为零 hours-minutes-seconds,1970-01-01T00:00Z。
long millis = instant.toEpochMilli() ;
LocalDateTime.now() 方法 returns LocalDateTime 的实例 class 所以如果你打印 LocalDateTime 的实例 class,它会打印当前时间和时间.
要获得正确的格式,您需要使用 JDK 1.8
中包含的 DateTimeFormatter class 来格式化当前日期
import java.time.format.DateTimeFormatter;
import java.time.LocalDateTime;
public class CurrentDateTime {
public static void main(String[] args) {
DateTimeFormatter date_wanted = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss");
LocalDateTime now = LocalDateTime.now();
System.out.println(date_wanted.format(now));
}
}
我正在尝试不用方法来做,以便更好地掌握概念。
我真的很亲近。我的时间数学似乎不对。我哪里不明白?
static void showCurrent(){
Date today = new Date();
long milliseconds = today.getTime(); // ex: 1651773923837
long seconds = milliseconds / 1000;
long minutes = seconds / 60;
long hours = minutes / 60;
long s = seconds % 60;
long m = minutes % 60;
long h = hours % 24;
System.out.printf("Date: %s, Time: %d\n", today.toString(), milliseconds);
System.out.println(h + ": " + m + ": " + s );
输出:
Date: Fri May 06 10:13:21 EDT 2022, Time: 1651846401839
14: 13: 21
根据 Javadoc 关于 Date::getTime:
Returns the number of milliseconds since January 1, 1970, 00:00:00 GMT represented by this Date object
重要的部分是“GMT”,它与您的时区不同:EDT,即... GMT - 4:00
避免遗留问题 date-time 类
java.util.Date
上的 toString
方法不幸 anti-feature 在生成文本时应用了 JVM 的当前默认时区。
永远不要使用 Date
。多年前被现代 java.time 类.
Instant
捕捉当下。
Instant instant = Instant.now() ;
以标准 ISO 8601 格式生成文本。
String output = instant.toString() ;
获取自 1970 年第一个时刻的纪元参考以来的毫秒数,与 UTC 的偏移量为零 hours-minutes-seconds,1970-01-01T00:00Z。
long millis = instant.toEpochMilli() ;
LocalDateTime.now() 方法 returns LocalDateTime 的实例 class 所以如果你打印 LocalDateTime 的实例 class,它会打印当前时间和时间. 要获得正确的格式,您需要使用 JDK 1.8
中包含的 DateTimeFormatter class 来格式化当前日期import java.time.format.DateTimeFormatter;
import java.time.LocalDateTime;
public class CurrentDateTime {
public static void main(String[] args) {
DateTimeFormatter date_wanted = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss");
LocalDateTime now = LocalDateTime.now();
System.out.println(date_wanted.format(now));
}
}