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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.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 - Fatal编程技术网

在java中将日期格式从一种更改为另一种

在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 :

我试图将一个带有一个时区(比如IST)的日期(date对象)转换为GMT格式的日期。但我得到的日期的时间确实发生了变化,但它显示的时区仍然是“IST”。我希望时区显示为“GMT”

  • 在尝试了几次转换之后,我使用了一个Date对象来获取最终日期,这给出了转换后的日期,但输出中的时区仍然是“IST”

  • 然后我尝试使用DateTime对象(Joda Time):

  • 它向我显示了以下输出:

        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