Java日期格式

Java日期格式,java,spring,web-applications,date,Java,Spring,Web Applications,Date,我有一个在Tomcat中运行的SpringWeb应用程序。我必须将申请的日期和编号格式设置为特殊格式 我可以在应用程序中将任何描述符中的格式设置为特殊格式,还是只能设置所有系统格式 我想使用这个模式:yyyy.mm.dd 此代码错误,因为它不是标准的区域设置模式: String currentDate = SimpleDateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT, Locale.UK).format(new

我有一个在Tomcat中运行的SpringWeb应用程序。我必须将申请的日期和编号格式设置为特殊格式

我可以在应用程序中将任何描述符中的格式设置为特殊格式,还是只能设置所有系统格式


我想使用这个模式:yyyy.mm.dd

此代码错误,因为它不是标准的区域设置模式:

String currentDate = SimpleDateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT, Locale.UK).format(new Date());
但我不希望在应用程序中的任何地方都键入模式,我希望设置一次模式

如果键入此代码,我希望:

String currentDate = SimpleDateFormat.getDateInstance(DateFormat.SHORT).format(new Date());
结果是:2010.08.04


有可能吗?

java.util.Date
对象本身没有格式(它们只表示日期和时间值,就像整数只表示数字值一样,对数字的格式一无所知)


没有系统范围的默认日期格式设置。通过(隐式或显式)调用
toString()
打印
Date
对象时,它将以固定的默认格式打印,您不能更改:

System.out.println(new Date());
// Example output: Wed Aug 04 09:46:57 CEST 2010
如果要以特定格式显示日期,请使用
java.text.DateFormat
对象对其进行格式化。例如:

DateFormat df = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
System.out.println(df.format(new Date()));
// Example output: 04-08-2010 09:48:47

无论您是否使用Spring,您完全可以按照任何方式格式化日期。首先,请确保您确实需要“特殊格式”,而不仅仅是特定区域设置的默认格式(如deCH、svSE或enGB),因为如果您只想将日期转换为您所在国家的本地日期格式,您只需使用

String currentDate = SimpleDateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT, Locale.UK).format(new Date());
如果你真的想要自定义格式,你可以这样做

String currentDateMyFormat = new SimpleDateFormat("dd:MMM:yy HH.mm").format(new Date());
当然,您可以通过将格式替换为解析来反转该过程(从字符串到日期)


希望这能回答你的问题,因为就像我之前的徐一样,我不确定我是否完全理解了你的问题;)

既然您谈论的是在应用程序范围内做一些事情,那么让我提醒您对任何java.text.Format子类(包括DateFormat、SimpleDataFormat等)都要小心。如中所述,格式通常不是线程安全的。根据我个人的经验,我知道日期格式并非如此


因此,如果您正在考虑设置在应用程序中使用的内容,我建议只定义格式字符串并在应用程序中共享它。Format类的实例最好以线程安全的方式定义,例如在方法调用的堆栈上。

“没有系统范围的默认日期格式设置。”-不是真的。DateFormat的getXXInstance()方法是一种依赖于系统范围语言环境的默认方法。可以,但您不能更改该设置,类
DateFormat
中没有
setXXInstance()
方法。