首页 > 解决方案 > Java SimpleDateFormat 未检测到月份

问题描述

我在 Java 中使用 SimpleDateFormat,由于某种原因它没有检测到月份。这是我的代码:

     /**
     * Takes a date/time stamp which looks like yyyyMMDDhhmmss on converts it to
     * yyyy-MM-DDThh:mm:ssZ
     *
     * @param timestamp
     * @return
     */
    public static String ConvertDate(String timestamp) {
        if (timestamp == null || timestamp.length() < 14)
            return null;

        String timeString = null;

        System.out.println(timestamp);
        DateFormat outputFormat = new SimpleDateFormat("YYYY-MM-DD'T'hh:mm:ss'Z'");
        DateFormat inputFormat = new SimpleDateFormat("yyyyMMDDhhmmss");

        try{
            Date date = inputFormat.parse(timestamp);
            timeString = outputFormat.format(date);
        }
        catch(Exception e){}

        return timeString;
    }

调用此方法:ConvertDate("20190803122424")返回以下内容:2019-01-03T12:24:24Z而我想返回:2019-08-03T12:24:24Z

我的输出格式有问题吗?

标签: javasimpledateformatdate-format

解决方案


您使用了错误的日期格式字符串:(DD年中的日)而不是dd(月中的日)。将两个SimpleDateFormat实例更改为使用dd

DateFormat inputFormat = new SimpleDateFormat("yyyyMMddhhmmss");
DateFormat outputFormat = new SimpleDateFormat("YYYY-MM-dd'T'hh:mm:ss'Z'");

因此,您得到了错误的结果。


推荐阅读