将IST转换为GMT时,我遇到了一个奇怪的问题。除了下午5点半和6点半以外,转换工作将全天候正常进行。在此期间,而不是将时间转换为12:00:00,它将转换为00:00:00在Java中将IST转换为GMT时的问题
回答
好的,所以我猜测IST意味着印度标准时间;即GMT + 5:30。
5:30 pm因此IST将是12点GMT格林威治标准时间12:00:00,使用传统的24小时制。 (或者他们用来称呼它的“铁路时间”。)
没有任何进一步的输入,我最好的猜测是你的时间处理代码有一些错误(例如输入时间不是什么你认为它是),或者区域设置有些奇怪的现象会影响时间显示的方式。
我在这个答案中使用24小时保持清楚。
你确定你从17:30 IST转换?如果你实际上是在05:30(即上午五点三十分)转换格林尼治标准时间午夜。在24小时内午夜是00:00,所以这些都会加起来。
但是,这并不能解释从06:30开始的转换,而这将是格林威治时间01:30。
TL;博士
ZonedDateTime.of(2017 , 1 , 23 , 17 , 30 , 0 , 0 , ZoneId.of("Asia/Kolkata"))
.toInstant()
2017-01-23T12:00:00Z
没有足够的信息
不可能精确回答这个问题,没有看到有问题的代码。但是我可以使用java.time类向您展示正确的现代代码。
使用java.time
通过“IST”你的意思是印度标准时间,爱尔兰标准时间,或伊朗标准时间?给出示例数据,我猜。
在continent/region
的格式指定一个proper time zone name,如America/Montreal
,Africa/Casablanca
,或Pacific/Auckland
。切勿使用3-4字母缩写,如EST
或IST
,因为它们是而不是真正的时区,不是标准化的,甚至不是唯一的(!)。
ZoneId z = ZoneId.of("Asia/Kolkata");
LocalDate localDate = LocalDate.of(2017 , 1 , 23);
LocalTime localTime = LocalTime.of(17 , 30); // 5:30 PM.
ZonedDateTime zdt = ZonedDateTime.of(localDate , localTime , z);
要通过UTC的透镜观看相同的时刻,提取Instant
。 Instant
类表示UTC中时间轴上的一个时刻,分辨率为nanoseconds(小数点后最多九(9)位数字)。
Instant instant = zdt.toInstant();
看到这个code run live at IdeOne.com。
在这个日期,印度的时间比UTC早5个半小时。因此,将下午加尔各答下午5点30分调整为UTC意味着减去5小时30分钟,这将我们带回到UTC的中午。所以你在结果中看到。
zdt.toString():2017-01-23T17:30 + 05:30 [亚/加尔各答]
instant.toString():2017-01-23T12:00:00Z
关于java.time
的java.time框架是建立在Java 8和更高版本。这些类取代了日期时间类legacy,如java.util.Date
,Calendar
,& SimpleDateFormat
。
Joda-Time项目现在位于maintenance mode,建议迁移到java.time类。请参阅Oracle Tutorial。并搜索堆栈溢出了很多例子和解释。规格是JSR 310。
从何处获取java.time类?
- Java SE 8和SE 9后来
- 内置。
- 带捆绑实现的标准Java API的一部分。
- Java 9增加了一些次要功能和修复。在ThreeTen-Backport
- Java SE 6和SE 7
- 大部分的java.time功能后移植到Java 6 & 7。
- Android
- 的ThreeTenABP项目适应ThreeTen-反向移植(上述)为Android特异性。
- 参见How to use ThreeTenABP…。
的ThreeTen-Extra项目与其他类扩展java.time。这个项目是未来可能增加java.time的一个试验场。您可以在这里找到一些有用的类,如Interval
,YearWeek
,YearQuarter
和more。
- 1. PHP将GMT转换为IST
- 2. 在iOS中将GMT转换为IST
- 3. 如何将ISO时间转换为android中的IST和GMT?
- 4. 想要将GMT日期时间转换为IST日期时间
- 5. 如何将此时间(GMT格式)转换为IST时间?
- 6. 在Android中以格式转换GMT到IST时区
- 7. 将UTC时间转换为IST时间
- 8. Java日历时区转换为GMT问题
- 9. 转换IST到PST在Java
- 10. 将GMT从GMT转换为UTC
- 11. 将GMT从GMT转换为EST
- 12. 如何在C(Ubuntu)中将IST时间转换为UTC时间?
- 13. 使用java脚本将时区从EST转换为IST
- 14. 将GMT时间转换为本地
- 15. 将NSDate转换为GMT时区
- 16. 将GMT时代转换为CST
- 17. 将facebook时间转换为GMT格式?
- 18. 如何将SQL Server时间转换为SQL中的IST时间?
- 19. 考虑到java中的夏令时,将IST转换为美国时区
- 20. 如何在SQL中将时间转换为IST?
- 21. 在Python中将当地时间转换为GMT时间
- 22. 在Groovy/Java中将UTC日期转换为GMT
- 23. 使用C#将GMT日期转换为本地时间时出现问题?
- 24. 如何将GMT时间自动转换为本地时间(MDT或MST)如何将GMT时间转换为XSLT
- 25. 在sql server中将时区的datetime转换为GMT
- 26. 将字符串转换为GMT时区日期。 JAVA
- 27. 在IST中转换UTC时间
- 28. IST到EST在Java中的时间转换
- 29. 将GMT时间转换为python中的当地时间
- 30. EDT为GMT转换
请向我们展示您使用的代码。 –
@Pablo 12:00 PM是正午,00:00是午夜。 – Rich