Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将字符串更改为日期_Java_String_Date - Fatal编程技术网

Java 将字符串更改为日期

Java 将字符串更改为日期,java,string,date,Java,String,Date,我试图改变字符串,看起来像这样:2016年7月4日 我尝试运行的代码是: Date d = null; String[] formats = {"d'st of' MMMMM yyyy","d'nd of' MMMMM yyyy","d'rd of' MMMMM yyyy","d'th of' MMMMM yyyy"}; for (String format : formats) { try {

我试图改变字符串,看起来像这样:2016年7月4日

我尝试运行的代码是:

        Date d = null;
        String[] formats = {"d'st of' MMMMM yyyy","d'nd of' MMMMM yyyy","d'rd of' MMMMM yyyy","d'th of' MMMMM yyyy"};
        for (String format : formats) {
            try {
                d = new SimpleDateFormat(format).parse(date);
            }
            catch (Exception e){
                System.out.println("Error in ConvertStringToDate s" + e);
            } 
        }
System.out.print(d.toString());
我从控制台收到的错误:

Error in ConvertStringToDate sjava.text.ParseException: Unparseable date: "4th of July 2016"
Error in ConvertStringToDate sjava.text.ParseException: Unparseable date: "4th of July 2016"
Error in ConvertStringToDate sjava.text.ParseException: Unparseable date: "4th of July 2016"
Error in ConvertStringToDate sjava.text.ParseException: Unparseable date: "4th of July 2016"
Exception in thread "main" java.lang.NullPointerException
    at MatchData.CollectMatch(MatchData.java:113)
    at GetData.main(GetData.java:13)
首先感谢所有试图提供帮助的人:

只要去掉使用String.replace的所有st of、nd of、rd of和th,并使用d MMMMM yyyy解析日期即可


您提供的代码不会在所有格式上循环-它会在第一次迭代中出现NullPointerException,因为缺少大括号。请提供您实际运行的代码的详细信息。接下来,您使用的是哪种语言环境?您尚未指定区域设置,因此将使用系统默认设置。如果您在创建SimpleDateFormat时指定Locale.ENGLISH,您可能会发现它已修复…@JonSkeet谢谢,我丢失了区域设置。添加它解决了问题。
new SimpleDateFormat(format).parse(
    date.replace("st of", "")
        .replace("nd of", "")
        .replace("rd of", "")
        .replace("th of", "")
);