我正在尝试使用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);
}
}
}
答案 0 :(得分:4)
您需要在SimpleDateFormat
上设置区域设置,否则平台默认区域设置将用于月份名称。您可以将其作为2nd argument to the SimpleDateFormat
constructor传递。如果您想使用英文格式的月份名称,请传递Locale.ENGLISH
。
new SimpleDateFormat("dd. MMM yyyy hh:mm:ss", Locale.ENGLISH);
顺便说一句,您可以通过
了解您的平台默认语言环境System.out.println(Locale.getDefault());
这可以在OS级别(例如在Windows控制面板中)和JVM参数中进行配置。