Java日期格式

时间:2010-08-04 07:06:07

标签: java spring web-applications date

我有一个在Tomcat中运行的spring Web应用程序。我必须将我的应用程序的日期和数字格式设置为特殊格式。

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


我想使用这种模式: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。

有可能吗?

3 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

无论您是否使用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());

当然,您可以通过将格式替换为解析来反转流程(从字符串到日期)。

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

答案 2 :(得分:0)

由于您正在谈论在应用程序范围内执行某些操作,因此我要提醒您对任何java.text.Format子类(包括DateFormat,SimpleDateFormat等)保持谨慎。如the Javadoc中所述,格式通常不是线程安全的。我从个人经验中知道DateFormats不是。

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