Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 乔达时间奇怪的时刻_Java_Date_Jodatime - Fatal编程技术网

Java 乔达时间奇怪的时刻

Java 乔达时间奇怪的时刻,java,date,jodatime,Java,Date,Jodatime,我试图以12:00的时间初始化一个对象,我是这样做的: public static final long MINUTE = 60 * 1000; public static final long HOUR = 60 * MINUTE; DateTime defaultDate = new DateTime(HOUR * 12); System.out.print("the hour is: " + defaultDate.getHourOfDay()) /

我试图以12:00的时间初始化一个对象,我是这样做的:

public static final long MINUTE         = 60 * 1000;
public static final long HOUR           = 60 * MINUTE; 

DateTime defaultDate = new DateTime(HOUR * 12);
System.out.print("the hour is: " + defaultDate.getHourOfDay()) // getting 14

为什么我得到14分而不是12分?也许妈妈没教我怎么正确地读钟

您正在指定自Unix纪元(UTC午夜)以来的毫秒数

但是,您在
日期时间
中隐式使用了系统默认时区,我怀疑在Unix时代,您的系统时区是UTC+2

如果要使用特定时区,可以在构造函数中传递:

DateTime defaultDate = new DateTime(HOUR * 12, DateTimeZone.UTC);

此外,您可以使用
DateTimeConstants.MILLIS\u PER\u HOUR
或用于转换,而不是使用自己的常量。

您指定的是Unix纪元(UTC午夜)以来的毫秒数

但是,您在
日期时间
中隐式使用了系统默认时区,我怀疑在Unix时代,您的系统时区是UTC+2

如果要使用特定时区,可以在构造函数中传递:

DateTime defaultDate = new DateTime(HOUR * 12, DateTimeZone.UTC);

此外,您可以使用
DateTimeConstants.MILLIS_PER_HOUR
或用于转换,而不是使用自己的常量。

那么,没有UTC有什么方法可以做到这一点吗?@VladIoffe:具体做什么?我怀疑你没有考虑过你要创建的对象的确切类型。如果您希望1970年1月1日上午12点在您的本地时区,我建议您首先创建一个
LocalDateTime
。那么没有UTC有什么方法可以做到这一点吗?@VladIoffe:具体做什么?我怀疑你没有考虑过你要创建的对象的确切类型。如果您希望1970年1月1日上午12点在您的本地时区,我建议您首先创建一个
LocalDateTime
。您的问题不清楚。你应该解释你想做什么,你期望什么,什么是错的。您是否试图在本地时区中创建1970年第一天中午的日期时间?这就是你的代码所建议的。我建议您阅读文档并搜索“joda”以找到许多示例。您的问题不清楚。你应该解释你想做什么,你期望什么,什么是错的。您是否试图在本地时区中创建1970年第一天中午的日期时间?这就是你的代码所建议的。我建议您阅读文档并搜索StackOverflow中的“joda”,以找到许多示例。