2013-12-13 4 views
2

я работаю над локализацией существующего приложения Java, часть из которых включает в себя замену линий, какПолучение формат времени с миллисекундах для локали

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

с

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

Все хорошо. Но теперь мне нужно локализовать следующее:

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

Есть ли простой способ сделать это? Поиски не позволяют мне. Я всегда мог отдать SimpleDateFormat, захватить шаблон и заменить ss на ss.SSS, но я бы скорее использовал метод, который с меньшей вероятностью будет разбит в будущем.

+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()); Я получу время с am/pm, подходит ли это или нет. –

+0

Извините, вы загрузите фактические форматы из [ResourceBundle] (http://docs.oracle.com/javase/6/docs/api/java/util/ResourceBundle.html). –

Смежные вопросы