当前位置: 首页 > 面试题库 >

如何在Java中设置默认时区并控制日期在DB上的存储方式?

鲁涵意
2023-03-14
问题内容

我有以下问题,当我在虚拟linux服务器上安装webapp的war时出现。它是这样的:我的服务器系统时间似乎正确,实际上在shell上键入日期的结果是:

Mon Apr 11 11:47:30 CEST 2011

这是我的“挂钟时间”。即使mysql正常工作,如果我选择now(),我也会得到:

mysql> select now()
    -> ;
+---------------------+
| now()               |
+---------------------+
| 2011-04-11 11:52:57 |
+---------------------+
1 row in set (0.01 sec)

但是我的应用程序(Java6上的Spring + hibernate + tomcat
6)将使用GMT时区将每个日期保存在DB中(并且时间已正确偏移了与GMT的时差,这很好)。现在的问题是,即使我这样做,我也会使用GMT显示所有日期:

static final DateFormat format = new SimpleDateFormat(
            "dd/MM/yyyy 'alle' HH:mm", Locale.ITALY);

我没有正确抵消小时,但是如果我在模式中加上Z(显示时区),它们将保留在GMT中,并显示GMT。

在Windows下,我将日期值存储在mySQL的本地时区中。因此,在我开发的Windows计算机上,所有日期都在CEST中。这很烦人,因为我不知道如何预测系统的行为方式,因此我必须进行无聊的测试并弄清楚如何进行更改。

你见过这个问题吗?怎么处理呢?


问题答案:
  SimpleDateFormat sf1 = new SimpleDateFormat("dd/MM/yyyy 'alle' HH:mm:ss");
        sf1.setTimeZone(TimeZone.getTimeZone("Europe/Rome"));
        System.out.println(sf1.format(new Date()));

// List all Timezone
        System.out.println(Arrays.asList(TimeZone.getDefault()));


 类似资料:
  • 我试图实现以下所示的功能: 这个代码失败了,因为 类DateTime的对象无法转换为字符串 另一个问题是,我觉得应该有更稳健/优雅的方法来解决这个问题。那么,如何在迁移中正确设置默认的值呢?

  • 我正在使用my.conf文件中的default_time_zone='+00:00'并重新启动mysql服务器。但默认时区仍然显示系统。

  • 问题内容: 我一直在开发使用以下代码的Android应用程序: 我需要从当前时刻开始8小时后获取日期,并且我希望该日期具有24小时格式,但是我不知道如何通过SimpleDateFormat进行设置。我还需要该日期具有格式。 问题答案: 这将为您提供24小时格式的日期。

  • 问题内容: 我在同一包中有2个班级。这两个类都具有main方法。现在,我想构建一个jar文件。我想建立2个jar文件,这些文件使用不同的主要功能作为默认主要功能。 例如 如何在NetBeans IDE中进行操作? 我找到了答案。您可以在netbeans中轻松地做到这一点:1)右键单击项目>属性>运行>选择类frm并下拉列表。在netbeans中是如此简单。Netbeans摇摇欲坠! 问题答案: 在

  • 每次更改后重新启动又恢复原样了,真烦,不习惯新窗口,只想设置停靠在右侧

  • 我想在我的web应用程序中工作在同一时区,我尝试使用de时区默认函数moment.tz.setDefault(“Europe/Madrid”);日期转换(json格式)不正确,默认为一天 http://plnkr.co/edit/xsughtdlufxugcjrwiz?p=preview 谢谢