我有一个在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。
有可能吗?
答案 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类的实例最好以线程安全的方式定义,例如在方法调用的堆栈上。