Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.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 SimpleDataFormat.parse()指定的空日期_Java - Fatal编程技术网

Java SimpleDataFormat.parse()指定的空日期

Java SimpleDataFormat.parse()指定的空日期,java,Java,我不想再发布一个简单的格式问题,但我在谷歌或其他帖子上找不到我的答案。下面是我的代码,注释指出了问题所在 // The dateString format is "Thu Jul 19 00:04:11 +0000 2012". I confirmed that there // is no preceding or trailing white space. public static GregorianCalendar stringToDate(String dateString) {

我不想再发布一个简单的格式问题,但我在谷歌或其他帖子上找不到我的答案。下面是我的代码,注释指出了问题所在

// The dateString format is "Thu Jul 19 00:04:11 +0000 2012". I confirmed that there
// is no preceding or trailing white space.
public static GregorianCalendar stringToDate(String dateString) {

    GregorianCalendar calendar = new GregorianCalendar();

    ParsePosition pos = new ParsePosition(0);

    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("EEE MMM d H:mm:ss Z yyyy");

    Date date = simpleDateFormat.parse(dateString, pos);


    // 'Unknown Source' error thrown by setTime() as date is ultimately null.
    calendar.setTime(date);

    return calendar;

}
我已经确认我的dateString参数正确通过,我的position对象从0开始,我已经对照SimpleDataFormat检查了很多次。在我看来这是正确的,但我仍然测试了各种“d”和“H”的排列。我能想到的唯一一件事是,在使用它的过程中有一些细微的差别,我没有注意到,或者说我已经偏离了基准

它可以编译(JavaC1.6.0_33),但在运行(java版本“1.6.0_33”)时,它甚至不会处理传递给它的第一个日期字符串值。我运行的是64位日文版Windows7


非常感谢您的帮助。

如果您计算机上的当前区域设置是日语(这里很可能是这种情况),那么
SimpleDateFormat
将只使用默认区域设置(日语)并尝试用它解析日期


如果日期字符串始终为英语,则应在中指定
Locale.US
如果计算机上的当前区域设置为日语(这里很可能是这种情况),则
SimpleDataFormat
将只使用默认区域设置(日语)并尝试用它解析日期


如果日期字符串始终使用英语,则应在中指定
Locale.US

尝试将“H:mm:ss”更改为“HH:mm:ss”,这是我尝试过的一种排列方式,但也不起作用(为了确定起见,重新编译了两次)。您确定代码是这样的吗?您没有任何尝试/捕获块吗?我认为
parse
永远不会返回null-如果解析失败,它将抛出异常。逐字逐句,是的。它返回“java.lang.NullPointerException at java.util.Calendar.setTime(未知源)”,当我检查日期时,它为空。@jonsket From javadoc:parse返回从字符串解析的日期。如果出现错误,则返回null。尝试将“H:mm:ss”更改为“HH:mm:ss”,这是我尝试过的一种排列,但也不起作用(重新编译两次只是为了确保)。您确定代码是这样的吗?您没有任何尝试/捕获块吗?我认为
parse
永远不会返回null-如果解析失败,它将抛出异常。逐字逐句,是的。它返回“java.lang.NullPointerException at java.util.Calendar.setTime(未知源)”,当我检查日期时,它为空。@jonsket From javadoc:parse返回从字符串解析的日期。如果出现错误,返回null。非常感谢。我添加了一行“Locale=newlocale(“US”);”并将“locale”变量放入我的SimpleDataFormat构造函数中。成功了!它显示的是“EDT”,而不是我想要的RFC822代码,但我可以在以后对其进行排序。非常感谢。我添加了一行“Locale=newlocale(“US”);”并将“locale”变量放入我的SimpleDataFormat构造函数中。成功了!它显示的是“EDT”,而不是我想要的RFC822代码,但我可以稍后对其进行排序。