0

我正在创建需要存储时间戳/日期的 Web 应用程序。

问题是我在其中一个托管站点上托管了我的站点,而托管站点基于美国。存储数据时,存储的是美国时间,而不是我自己国家的时间。

我相信我需要将托管服务器时间设置为我所在国家/地区的时间,或者我需要在保存之前转换时间。我尝试了一些代码,但我没有得到。

有人可以帮我如何在java中转换时间吗?

当我打印

 System.out.println(new Date());

我得到的是美国时间,而不是我现在的时间。我需要将此时间转换为按照我的国家时间(即科威特时间)显示。

编辑 1

当我将日期打印为System.out.println(new Date());时,我得到输出,Thu Sep 06 11:07:49 EDT 2012这意味着我正在获取服务器时间。

现在我想将此时间转换为某个国家/地区时间,比如说科威特或任何其他国家/地区,即同一时间应显示为当前国家/地区。

即国家科威特的时间应该是Thu Sep 06 19:07:49 AST 2012

对于印度来说应该是Thu Sep 06 21:37:49 IST 2012

编辑 2

措辞更好的问题 希望如此

我使用 JSF 创建了一个 Web 应用程序,我的服务器位于美国。我存储timestamp在数据库中。现在在打印时间时,我显然会得到数据库中的时间,即美国数据。

我正在准备要在其中显示数据以及时间的报告。

+++++++++++++++++++++++++++++++++++
+   Name    +      Time           +
+++++++++++++++++++++++++++++++++++
+ Name 1    +  10/09/2012 10:11   +
+ Name 2    +  10/09/2012 21:11   +
+ Name 3    +  10/09/2012 17:11   +
+++++++++++++++++++++++++++++++++++

现在的问题是这些时间是按照美国时间,因此我需要将这些美国时间转换为我所在的国家时间。我需要显示我访问互联网的时间,即如果我在科威特,我需要按照科威特时间安排这些时间。如果我在迪拜访问这些数据,我需要按照迪拜时间显示报告。

有人可以帮助我如何摆脱这些问题吗?

4

3 回答 3

0

您可能会查看与日期相关的国际化项目。这是一个很好的链接,可能有助于开始。 国际化

于 2012-09-07T16:18:49.650 回答
0

java.util.Date应该总是给你 UTC。当您将它放在对它的调用中时,println它会转换为本地时间(代码正在执行的地方),因为在.toString().println().

确保您将日期存储为原始值,并且在此.toString()过程中没有被调用(例如当数据库将其转换为分阶段的时间戳时)等。

Jon Skeet(在我引用的答案中)还建议可能使用替代的 datetime 包,这并不完全是您所要求的,但可能至少提供了一些查看问题的替代方法。

于 2012-09-07T16:12:13.243 回答
0

如果您正在使用时间操作,您应该使用Calendar对象获取具有 Calendar#getInstance(Timezone) 静态方法的实例,提供与您的时区相对应的 TimeZone 对象。

如果您必须打印具有已定义时区的 Date 对象,请获取DateFormat对象并将其时区设置为与您的喜好相对应的时区。

这是一个示例:

SimpleDateFormat dateFormat = new SimpleDateFormat(
                                "yyyy.MM.dd G 'at' HH:mm:ss z", Locale.UK);
dateFormat.setTimeZone(TimeZone.getTimeZone("GMT+1:00")); //London?

String fullDateUK = dateFormat.format(new Date());

System.out.println(fullDateUK);
于 2012-09-07T16:24:03.007 回答