2013-12-13 28 views
2

我工作的定位现有的Java应用程序,其中包括与获取时间格式毫秒的语言环境

DateFormat f2 = DateFormat.getTimeInstance(DateFormat.MEDIUM); 

一切都很好替换像

DateFormat f2 = new SimpleDateFormat("h:mm:ss a"); 

线。但现在我需要本地化以下内容:

DateFormat f1 = new SimpleDateFormat("h:mm:ss.SSS a"); 

有没有简单的方法来做到这一点?搜索让我失望。我总是可以使用SimpleDateFormat,抓取模式,并用ss.SSS代替ss,但我更愿意使用不太可能在未来破解的方法。

+0

没有必要添加的主要标签的称号。 –

回答

0

是的。我能想到的两种选择 -

  1. 定义自己的
  2. 的不断使自己的枚举

public static String MY_DATE_FORMAT = "HH:mm:ss.SSS a"; // a constant. 
public static enum DATE_FORMATS { // a enum 
    SHORT, LONG, MEDIUM; 
    public String toString() { 
    switch (this) { 
    case SHORT: 
     return "HH:mm:ss"; // this should be loaded from a ResourceBundle. 
    case LONG: 
     return "HH:mm:ss.SSS a"; // this should be loaded from a ResourceBundle. 
    case MEDIUM: 
     return "HH:mm:ss.SSS"; // this should be loaded from a ResourceBundle. 
    } 
    return ""; 
    } 
} 

public static void main(String[] args) { 
    SimpleDateFormat sdf = new SimpleDateFormat(MY_DATE_FORMAT); // option 1 
    System.out.println(sdf.format(new Date())); 
    sdf = new SimpleDateFormat(DATE_FORMATS.SHORT.toString()); // option 2 
    System.out.println(sdf.format(new Date())); 
} 
+0

我无法理解这是如何处理本地化的。似乎任何时候我打电话 sdf = new SimpleDateFormat(DATE_FORMATS.SHORT.toString()); 我会在上午/下午得到一个时间,不管这是否合适。 –

+0

对不起,您然后从[ResourceBundle](http://docs.oracle.com/javase/6/docs/api/java/util/ResourceBundle.html)加载实际格式。 –

相关问题