Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.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

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_Datetime_Calendar - Fatal编程技术网

Java 日期时间中的默认区域混淆

Java 日期时间中的默认区域混淆,java,date,datetime,calendar,Java,Date,Datetime,Calendar,我有一个以毫秒为单位的时间戳。例如:1394504624657L并使用下面的代码将其转换为日历对象 Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("UTC")); cal.setTimeInMillis(millis); 上面可以是UTC/GMT。它表示2014年3月11日星期二格林威治标准时间凌晨2:23:44 如果我创建的日历对象没有分区,有什么区别。这也是java编码中创建日历对象的正确方法 如果我创建的日历对象没有分区

我有一个以毫秒为单位的时间戳。例如:1394504624657L并使用下面的代码将其转换为日历对象

Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
cal.setTimeInMillis(millis);
上面可以是UTC/GMT。它表示2014年3月11日星期二格林威治标准时间凌晨2:23:44

如果我创建的日历对象没有分区,有什么区别。这也是java编码中创建日历对象的正确方法

如果我创建的日历对象没有分区,有什么区别

根据的文档,如果未给出参数,则使用默认时区(可能取决于操作系统的设置)

这也是java编码中创建日历对象的正确方法

Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
cal.setTimeInMillis(millis);

这取决于你想做什么。所有
Calendar
工厂方法都是创建
Calendar
实例的有效方法,具体取决于用例。

谢谢Robin,但这里的问题是,当我返回cal.get(Calendar.HOUR)时,从Calendar对象,如果通过如上给出时区创建的Calendar对象返回正确的2。但是如果我去掉时区,它会返回7小时。这就是为什么我不知道这是不是正确的方法。我的用例是用户以毫秒为单位给出时间戳,然后返回小时。如果您能帮助我解决这一困惑,我将不胜感激。@user3919392您熟悉时区的概念吗?假设你住在巴基斯坦。那么您的本地(和默认)时区是UTC+5。因此,如果伦敦的时间戳是2:00(=UTC),巴基斯坦的时间戳是7:00(=UTC+5)。两个结果都是有效的。好吧,假设2014年3月11日星期二格林威治标准时间凌晨2:23:44对应的毫秒值是1394504624657L。我想得到2的正确小时数。那么我怎样才能做到这一点呢。请原谅,我是这个时区的新手