java - 如何将日历对象转换为即时对象?

标签 java date datetime java-8

我有一个Calendar根据我的需要操作对象,但将其转换为 Instant没有给我正确的结果:

Calendar cal = Calendar.getInstance(); // creates calendar
cal.setTime(inputFiledate); // sets calendar time/date --> inputFiledate is 29-12-2015
cal.set(Calendar.HOUR_OF_DAY, Integer.parseInt(inputFileHour)); -->inputFileHour is 5
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
cal.add(Calendar.HOUR_OF_DAY,3); // adds  hours that is now time is 29-12-2015 08:00:00
System.out.println("Date after manipulation "+cal.getTime()); -->Displays 
TimeZone tz = TimeZone.getTimeZone("UTC");

// set the time zone with the given time zone value 
// and print it
cal.setTimeZone(tz);
// Date date = cal.getTime(); // returns new date object, one hour in the future
Date d= cal.getTime();
System.out.println("DAte to Instant "+ d.toInstant()); 
System.out.println(" Calendar to Instant "+cal.toInstant());
System.out.println("Date after manipulation2 "+cal.getTime());

这是输出:

Date after manipulation Tue Dec 29 08:00:00 IST 2015
DAte to Instant 2015-12-29T02:30:00Z
Calendar to Instant 2015-12-29T02:30:00Z
Date after manipulation2 Tue Dec 29 08:00:00 IST 2015

需要将此日历对象转换为即时对象,但它给出的结果不正确 2015-12-29T02:30:00Z 输出应为 2015-12-29T08:00:00Z 我哪里出错了?

还尝试过 Zoned datetime ,与 Timezone ,徒劳。

最佳答案

日期没有时区。从时差来看,我假设您使用的是印度时间(-5:30),这只是相对于纪元的时间,每个时区都不同。

我建议您使用 ZonedDateTime 进行计算,而不是尝试从日历进行转换。

关于java - 如何将日历对象转换为即时对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34530309/

相关文章:

java - .jsp 文件不适用于 Google App Engine 留言簿教程

java - GWT 中的 RegExp 和 MatchResult 仅返回第一个匹配项

java - Guice - 在运行时根据定义的注入(inject)点将泛型类绑定(bind)到实例

objective-c - 如何将基于十进制的时间转换为 NSDate?

java - 检索自签名 jar 的证书时出现问题

php - 如何轻松确定生日的年龄? (php)

java - 如何在日期解析(Java)中忽略时区标识符?

linux - 如何修改/子集 wget 脚本以指定日期范围以仅将某些年份下载到不同的脚本中?

python - 如何在 MongoDB 中以 dd/mm/yyyy 形式存储和检索日期?

java - 根据 UTC 的不同时区处理 Java 夏令时(joda Interval)