Преобразование строки в форматированную дату - PullRequest
2 голосов
/ 07 апреля 2011

Я пытаюсь преобразовать строку в правильный формат даты, используя Java SimpleDateFormat. По некоторым причинам он не работает с определенными месяцами, такими как «март», «май», «октябрь» и «декабрь». Кто-нибудь может мне помочь? Работает отлично все остальные месяцы.

import java.sql.Date;
import java.text.SimpleDateFormat;

import com.sun.org.apache.xerces.internal.impl.xpath.regex.ParseException;

public class test {
    public static void main(String args[]) throws java.text.ParseException {
        try {
            SimpleDateFormat parse = new SimpleDateFormat("dd. MMM yyyy hh:mm:ss");
            SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

            //why this doesn't work with certain months like Mar, May, Oct, and Dec? otherwise it works fine

            String dateTime =   "01. Jun 2010 15:30:32";
            //String dateTime = "07. Mar 2011 15:20:10";
            //String dateTime = "07. May 2011 15:20:10";
            //String dateTime = "07. Oct 2011 15:20:10";
            //String dateTime = "07. Dec 2011 15:20:10";


            java.util.Date parsed =parse.parse(dateTime);
            System.out.println("formatted: " + formatter.format(parsed));
        } catch(ParseException e) {
            System.out.println("Caught " + e);
        } 
    }
}    

1 Ответ

4 голосов
/ 07 апреля 2011

Необходимо установить языковой стандарт на SimpleDateFormat, в противном случае для названий месяцев будет использоваться языковой стандарт по умолчанию для платформы. Вы можете сделать это, передав его как 2-й аргумент конструктору SimpleDateFormat . Если вы хотите работать с названиями месяцев в английском формате, передайте Locale.ENGLISH.

new SimpleDateFormat("dd. MMM yyyy hh:mm:ss", Locale.ENGLISH);

Кстати, о локали по умолчанию для вашей платформы вы можете узнать,

System.out.println(Locale.getDefault());

Это настраивается на уровне ОС (например, на панели управления Windows) и в качестве аргумента JVM.

...