在java中将日期格式从一种更改为另一种
我试图将一个带有一个时区(比如IST)的日期(date对象)转换为GMT格式的日期。但我得到的日期的时间确实发生了变化,但它显示的时区仍然是“IST”。我希望时区显示为“GMT”在java中将日期格式从一种更改为另一种,java,date,datetime,Java,Date,Datetime,我试图将一个带有一个时区(比如IST)的日期(date对象)转换为GMT格式的日期。但我得到的日期的时间确实发生了变化,但它显示的时区仍然是“IST”。我希望时区显示为“GMT” 在尝试了几次转换之后,我使用了一个Date对象来获取最终日期,这给出了转换后的日期,但输出中的时区仍然是“IST” 然后我尝试使用DateTime对象(Joda Time): 它向我显示了以下输出: dateIndia : Thu Sep 04 15:49:50 IST 2014 dateTime :
dateIndia : Thu Sep 04 15:49:50 IST 2014
dateTime : 2014-09-04T15:49:50.152+05:30
date_UtcGmt : 2014-09-04T10:19:50.152Z
date_UtcGmt.toDate : Thu Sep 04 15:49:50 IST 2014
现在我有GMT格式的date_UtcGmt,但当我将其转换为date时,它又是IST格式。我想要一个日期对象,它显示GMT作为它的时区。我可以更改日期\ UtcGmt对象的显示格式吗?我该怎么办?使用
java.util.Date
无法解决此问题。该类不存储时区,因此您必须在打印日期时进行时区操作
使用Joda time,您可以使用DateTime
和withZone()
实现所需的结果:
对我来说(在英国),这张照片:
2014-09-04T12:16:33.357+01:00
2014-09-04T11:16:33.357Z
2014-09-04T12:16:33.357+01:00
2014-09-04T11:16:33.357Z
我们可以设置默认时区来执行此操作。尝试以下方法:
TimeZone.setDefault(TimeZone.getTimeZone("GMT"));
System.out.println("date_UtcGmt.toDate : " + date_UtcGmt.toDate());
输出将是这样的
date_UtcGmt.toDate : Thu Sep 04 11:44:20 GMT 2014
颤抖我的木材
a) 日期没有时区,请阅读javadoc
b) date的toString()方法打印出JVM时区中的内容,看在上帝的份上,对于日期转换,不要更改这些内容
c) 设置时区GMT并调用变量UtcGmt。GMT和UTC并不完全相同,而且它们都是时区,您专门将其设置为GMT,那么为什么名称中有UTC
d) 你想在某个时区“展示它”吗?哪里当您将其打印到控制台时?在web应用程序中?桌面应用程序?有些框架有定制的格式化程序,但是如果您想自己格式化,可以使用SimpleDataFormat(或者Joda提供的任何东西)。日期本身只是一个时间点,表示为长时间,没有时区、语言、格式等您看过
withZone
方法吗java.util.Date
对象没有时区的概念,因此无法将一个时区转换为另一个时区。但是你可以在特定的时区打印日期,这就是你想要的吗?嗨,雷托,我需要一个GMT格式的“日期”对象。withZone给出的输出与下面给出的相同:System.out.println(“date\u UtcGmt:+date\u UtcGmt”);你好,邓肯,是的,在转换日期后,我希望打印“GMT”而不是“IST”,这里是:“Thu Sep 04 15:49:50 IST 2014”。但是我想要一个日期对象,因为我需要一个GMT时间在日期对象中进一步使用。因此,类似这样的问题应该有帮助(或者是重复的?)
TimeZone.setDefault(TimeZone.getTimeZone("GMT"));
System.out.println("date_UtcGmt.toDate : " + date_UtcGmt.toDate());
date_UtcGmt.toDate : Thu Sep 04 11:44:20 GMT 2014