2

我正在尝试使用 Java 将字符串转换为正确的日期格式SimpleDateFormat。出于某种原因,它不适用于某些月份,例如“Mar”、“May”、“Oct”和“Dec”。有人可以帮助我吗?它适用于所有其他月份。

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);
        } 
    }
}    
4

1 回答 1

4

您需要将语言环境设置为 on SimpleDateFormat,否则将使用平台默认语言环境作为月份名称。您可以通过将其作为第二个参数传递给SimpleDateFormat构造函数来做到这一点。如果您想使用英文格式的月份名称,请通过Locale.ENGLISH.

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

顺便说一句,您可以通过以下方式了解您的平台默认语言环境

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

这可以在操作系统级别(例如,在 Windows 控制面板中)和作为 JVM 参数进行配置。

于 2011-04-07T13:04:40.897 回答