Java 在本地机器和生产中获取不同的日期格式

Java 在本地机器和生产中获取不同的日期格式,java,date,date-formatting,Java,Date,Date Formatting,我有一个屏幕,我应该根据特定的日期范围进行搜索 当我尝试在本地主机(连接到生产数据库)的日期范围内搜索时,我得到了预期的结果。而在生产中(也连接到同一数据库),没有找到日期范围的搜索结果 我发现的问题是本地主机中的日期格式 2018年2月1日而在生产中,日期格式为2018年2月1日。我确信问题就在这里,但不确定单是制作的格式是如何变化的。我更改了Java中日期的格式,如: if(packingMobileHdrTO.getFromDate() != null ) { fromDate =

我有一个屏幕,我应该根据特定的日期范围进行搜索

当我尝试在本地主机(连接到生产数据库)的日期范围内搜索时,我得到了预期的结果。而在生产中(也连接到同一数据库),没有找到日期范围的搜索结果

我发现的问题是本地主机中的日期格式
2018年2月1日
而在生产中,日期格式为2018年2月1日。我确信问题就在这里,但不确定单是制作的格式是如何变化的。我更改了Java中日期的格式,如:

if(packingMobileHdrTO.getFromDate() != null )
{
    fromDate = DATE_FORMATTER_DD_MMM_YYYY.format(packingMobileHdrTO.getFromDate());
}

prod与本地计算机中的区域设置不同

将它们设置为相同,或者:

  • 在系统的配置中
  • 启动JVM时在命令行上
  • 通过调用
    Locale.setDefault(…)
  • 或者在
    DATE\u FORMATTER\u DD\MMM\u YYYY
    上显式设置区域设置(如果日期必须采用特定格式,这是最可靠的选项)

prod中的语言环境设置与本地计算机不同

将它们设置为相同,或者:

  • 在系统的配置中
  • 启动JVM时在命令行上
  • 通过调用
    Locale.setDefault(…)
  • 或者在
    DATE\u FORMATTER\u DD\MMM\u YYYY
    上显式设置区域设置(如果日期必须采用特定格式,这是最可靠的选项)

非常感谢你@Andy TurnerYes,我做到了。时区和区域设置都有一个相同的问题,即它们当前的默认值是JVM的全局值。程序员也常常不自觉地考虑它们。感谢您的更正,我将重新发布。注意
Locale.serDefault
,因为它会立即影响该JVM中所有应用程序的所有线程中的所有代码。只能在万不得已的情况下使用。而是显式地传递所需/预期的语言环境,而不是隐式地依赖于当前默认值。顺便说一下,时区也是如此。@BasilBourque*
setDefault
;)但是是的,非常感谢你,安迪·特恩里耶斯,我做到了。时区和区域设置都有一个相同的问题,即它们当前的默认值是JVM的全局值。程序员也常常不自觉地考虑它们。感谢您的更正,我将重新发布。注意
Locale.serDefault
,因为它会立即影响该JVM中所有应用程序的所有线程中的所有代码。只能在万不得已的情况下使用。而是显式地传递所需/预期的语言环境,而不是隐式地依赖于当前默认值。顺便说一下,时区也是如此。@BasilBourque*
setDefault
;)但是是的。