Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.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_Timezone_Date Conversion - Fatal编程技术网

将Java日期转换为另一个时间作为日期格式

将Java日期转换为另一个时间作为日期格式,java,timezone,date-conversion,Java,Timezone,Date Conversion,我想把日期转换成“独立时间”。具体而言:“亚洲/加尔各答” 代码: 以下是上述代码的输出: Correct Date : 2013-04-15 15:40:04 Wrong Output : Mon Apr 15 03:10:04 MST 2013 我想要的是日期,不是字符串,但是当我检索日期时,时间是3:10,当我获取字符串时,我得到15:40:04。为什么它们不一样?Parse将返回一个DateObject,因此调用: System.out.println("Wrong Output :

我想把日期转换成“独立时间”。具体而言:“亚洲/加尔各答”

代码:

以下是上述代码的输出:

Correct Date : 2013-04-15 15:40:04
Wrong Output : Mon Apr 15 03:10:04 MST 2013

我想要的是日期,不是字符串,但是当我检索日期时,时间是
3:10
,当我获取字符串时,我得到
15:40:04
。为什么它们不一样?

Parse将返回一个DateObject,因此调用:

System.out.println("Wrong Output : "+simpleDateFormat.parse(dateString));
有点类似于:

Date d1 = simpleDateFormat.parse(dateString);
System.out.println("Wrong Output : "+d1.toString());
请记住,解析日期只是解析字符串以生成日期对象,如果要以某种格式显示它,请使用该日期对象并对其调用sdf.format。 e、 g


Parse将返回一个DateObject,因此调用:

System.out.println("Wrong Output : "+simpleDateFormat.parse(dateString));
有点类似于:

Date d1 = simpleDateFormat.parse(dateString);
System.out.println("Wrong Output : "+d1.toString());
请记住,解析日期只是解析字符串以生成日期对象,如果要以某种格式显示它,请使用该日期对象并对其调用sdf.format。 e、 g


日期
不包含任何格式。它只是一个日期。因此,您不能在不同的输出格式之间转换
日期
对象。一旦你有了日期,就没有必要尝试将它转换成不同的格式。使用
SimpleDateFormat
将其转换为
字符串时,将决定如何格式化。因此,解析完日期后,只需保留它,直到需要对其进行格式化以供输出。

日期不包含任何格式。它只是一个日期。因此,您不能在不同的输出格式之间转换
日期
对象。一旦你有了日期,就没有必要尝试将它转换成不同的格式。使用
SimpleDateFormat
将其转换为
字符串时,将决定如何格式化。因此,一旦您解析了日期,只需保留它,直到您需要将其格式化为输出。

使用DateFormat类的静态函数getDateTimeInstance(int-dateStyle,int-timeStyle)。
有关更多详细信息,请参见DateFormat类。它可能会帮助您。

使用DateFormat类的静态函数getDateTimeInstance(int-dateStyle,int-timeStyle)。 有关更多详细信息,请参见DateFormat类。它可能会帮助您。

parse()解析日期文本并构造一个长值的日期对象。parse()javadoc说

The TimeZone value may be overwritten, depending on the given pattern and 
the time zone value in text. Any TimeZone value that has previously been 
set by a call to setTimeZone may need to be restored for further operations.
您的parse Date对象是通过调用在MST时区中打印它的日期上的toString()来打印的。如果您将它从MST转换为IST,那么您将获得所需的时间戳。因此,您的输出是正确的。您所需要做的就是使用正确的时区格式化和打印长日期值。

parse()解析日期文本并构造长日期对象。parse()javadoc说

The TimeZone value may be overwritten, depending on the given pattern and 
the time zone value in text. Any TimeZone value that has previously been 
set by a call to setTimeZone may need to be restored for further operations.

您的parse Date对象是通过调用在MST时区中打印它的日期上的toString()来打印的。如果您将它从MST转换为IST,那么您将获得所需的时间戳。因此,您的输出是正确的。您需要做的就是使用正确的时区格式化并打印长日期值。

当日期存储到数据库中时,我不会将其存储到indien时区。如果
日期字符串
已经生成正确的格式,那么问题是什么呢?当我解析它时,返回字符串,但该字符串不会转换为印度时间的日期。当日期存储到数据库时,我不会存储到印度时区。如果
dateString
已经生成了正确的格式,那么问题出在哪里呢?当我解析它时,返回字符串,但那个字符串在印度时间不会转换为日期。只是为了添加到其他字符串中。。。Date对象只表示一个时间点,不包含TZ知识,即使您可能已经使用知道TZ的SimpleDataFormat对象创建了它。无论何时将日期转换为其字符串表示形式,都必须使用TZ以了解如何显示该日期。由于日期不知道TZ,当您像隐式调用那样调用
Date.toString()
时,它别无选择,只能假设您指的是默认TZ。您必须使用了解TZ的SDF对其进行格式化,而不是依赖日期的
toString()
方法。。。Date对象只表示一个时间点,不包含TZ知识,即使您可能已经使用知道TZ的SimpleDataFormat对象创建了它。无论何时将日期转换为其字符串表示形式,都必须使用TZ以了解如何显示该日期。由于日期不知道TZ,当您像隐式调用那样调用
Date.toString()
时,它别无选择,只能假设您指的是默认TZ。您必须使用了解TZ的SDF对其进行格式化,而不是依赖日期的
toString()
方法。