我有以下代码
public String getDate(Date date) throws Exception{
String finalDate = "";
SimpleDateFormat formatter = new SimpleDateFormat("MM/dd/yyyy");
finalDate = formatter.format(date);
return finalDate;
}
我将此方法的输入传递为9999-12-30 18:30:00.0
。
在我的实时环境中,结果为:12/30/9999
在我的本地环境中,结果为:12/31/9999
这种奇怪行为可能是什么原因。提前谢谢..
答案 0 :(得分:2)
因为您的实时环境与本地
之间存在时区差异答案 1 :(得分:1)
要强制dateformat使用特定时区(例如UTC),您可以使用:
SimpleDateFormat formatter = new SimpleDateFormat("MM/dd/yyyy");
formatter.setTimeZone(TimeZone.getTimeZone("UTC"));
答案 2 :(得分:0)
@psr你提到你的本地服务器在印度,生产在美国..
时区是个问题所以它正在创造这个问题。
因为您的生产服务器在美国,请尝试此操作。
SimpleDateFormat formatter = new SimpleDateFormat("MM/dd/yyyy");
formatter.setTimeZone(TimeZone.getTimeZone("UTC"));
答案 3 :(得分:0)
要记住的一件好事是java.util.Date中没有时区概念。我很惊讶很少有人知道这一点 因此,如果您希望在应用程序中使用统一结果,请确保在解析和打印时使用时区 正如@assylias所说,你可以设置日期格式化程序的时区来实现这一点。
答案 4 :(得分:0)
时区格式肯定。我建议你使用JodaTime而不是使用SimpleDateFormat。
此外,如果您想要阻止所有环境的时区问题formatter.setTimeZone(“UTC”)