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
java代码中的时区问题_Java_Date_Datetime - Fatal编程技术网

java代码中的时区问题

java代码中的时区问题,java,date,datetime,Java,Date,Datetime,我正在尝试使用TimeZone.getDefault()获取本地时区,服务器正在CST时区中运行,但每当我执行以下代码时,我都会得到输出“Wed Nov 5,2014 03:52:22 PM GMT”,但我需要CST中的时区。我的代码有问题吗 SimpleDateFormat dateFormat = new SimpleDateFormat("EEE, d MMM yyyy hh:mm:ss zzz"); Date dtTimeStamp = dateFormat.parse((String

我正在尝试使用TimeZone.getDefault()获取本地时区,服务器正在CST时区中运行,但每当我执行以下代码时,我都会得到输出“Wed Nov 5,2014 03:52:22 PM GMT”,但我需要CST中的时区。我的代码有问题吗

SimpleDateFormat dateFormat = new SimpleDateFormat("EEE, d MMM yyyy hh:mm:ss zzz");

Date dtTimeStamp = dateFormat.parse((String) map.get("TimeStamps")); 

SimpleDateFormat dateFormat2 = new SimpleDateFormat("E MMM d, yyyy hh:mm:ss a zzz");

TimeZone tzDefault = TimeZone.getDefault();

dateFormat2.setTimeZone(tzDefault);

dateFormat2.format(dtTimeStamp);

通常,您可以使用getDefault获得时区,它根据程序运行的时区创建时区

因此,必须明确提供所需的时区

TimeZone tzDefault = TimeZone.getTimeZone("GMT");

如果
TimeZone.getDefault()
未返回CST,则您的服务器不在CST timzone中,或者未进行相应的配置

时区.getDefault()
由以下因素确定:

  • 使用user.timezone属性值作为默认时区ID(如果可用)
  • 检测平台时区ID。平台时区的来源和ID映射可能因实现而异
  • 如果给定或检测到的时区ID未知,则使用GMT作为最后手段
您可以检查服务器配置,也可以显式获取CST时区:

TimeZone timeZone = TimeZone.getTimeZone("CST");

将来,请让它更具可读性。代码不会产生任何输出,因此不清楚您在这里询问的是什么。目前该程序正在时区为CST的服务器上运行,但我的代码返回GMT。这就是问题所在。哼,您的serveur os和JRE版本是什么?os:Win server 2008 JRE:1.5.005