Java SimpleDateFormat 总是返回一月份的月份

标签 java active-directory simpledateformat

我正在从 Active Directory 中获取日期值 (createWhen),并将其转换为 Java 日期,以获取在两个日期之间创建的帐户列表。一切正常,除了一种方法:我从 AD 日期到 Java 日期的方法。该方法如下所示:

private Date getParsedDate(String givenString) {
    System.out.println("Value from AD is: " + givenString);
    Date parsedDate = null;
    String formattedString = this.formatDateString(givenString);
    System.out.println("Formatted String is: " + formattedString);
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/DD");
    try {
        parsedDate = sdf.parse(formattedString);
        System.out.println("Final date string is: " + parsedDate.toString());
    } catch (ParseException ex) {
        ex.printStackTrace();
    }
    return parsedDate;
}

并且,对于来自 AD 的单个任意数据:

来自 AD 的值为:20050912190509.0Z

格式化字符串为:2005/09/12

最终日期字符串为:Wed Jan 12 00:00:00 EST 2005

显然,它正确地选择了日期和年份(如果我选择包括小时/分钟/秒,它也正确地包括那些),但是每个日期都被放置在一月份某种原因。

现在,我确信我的错误是一个非常简单的错误,但我已经重新检查了我的格式大约十次,现在我已经看不到它了。第二双眼睛能否有希望地检查我的代码并指出我哪里出了问题,让月份如此严重不正确?

谢谢。

最佳答案

将模式字符串从“yyyy/MM/DD”更改为“yyyy/MM/dd”

SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");

关于Java SimpleDateFormat 总是返回一月份的月份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3560279/

相关文章:

java - 循环程序直到0(退出)(java)

Java简单句解析器

c# - 如何从 Active Directory 中获取组中每个成员的属性列表,例如名字、姓氏、电子邮件

java - 为什么我加了 10 分钟后月份变成了 50?

java - 微调器选择是更新微调器项目之前的记录

java - 如何更新rt.jar文件?

c# - 通过 .net 获取 Active Directory 组中的用户名

c# - 如何使用 AuthType.Kerberos 对 Active Directory 中的用户进行身份验证?

android - SimpleDateFormat 解析器

java - 解析字符串到日期 : Illegal pattern character 'T' .