0

我需要将日期格式转换为 NEW_FORMAT日期格式。我想像这样显示2016 年6 月 28日,但无论我通过什么月份 ,它都会显示1月。请检查我失踪的地方..

public class DateClass {

        public static void main(String[] args)
        {
            final String OLD_FORMAT = "yyyy-mm-dd";
            final String NEW_FORMAT = "MMMM dd,yyyy";

            String oldDateString = "2016-06-28";
            String newDateString;

            SimpleDateFormat sdf = new SimpleDateFormat(OLD_FORMAT);
            Date d;
            try {
                d = sdf.parse(oldDateString);
                sdf.applyPattern(NEW_FORMAT);
                newDateString = sdf.format(d);
                System.out.println(""+newDateString);
            } catch (ParseException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }
4

4 回答 4

4

OLD_FORMAT错了,应该是"yyyy-MM-dd"。这里 smallm应该替换为 capital M,因为 smallm代表分钟和M代表一年中的月份,并且在使用 解析时OLD_FORMAT,日期被错误地解析。

于 2013-07-18T11:37:25.100 回答
2

在java中,mm代表小步舞曲,MM代表月份,所以你必须将你的代码更改为

  final String OLD_FORMAT = "yyyy-MM-dd";
  final String NEW_FORMAT = "MMMM dd,yyyy";

  String oldDateString = "2016-06-28";
于 2013-07-18T11:40:38.827 回答
2

改变这个

 final String OLD_FORMAT = "yyyy-mm-dd";

 final String OLD_FORMAT = "yyyy-MM-dd";
于 2013-07-18T11:41:10.243 回答
2

您正在使用mmin OLD_FORMATwhich 代表分钟。你想要MM哪个代表月份。

因此你OLD_FORMAT应该是yyyy-MM-dd

在您的情况下,分钟设置为0,因此月份是一月。

于 2013-07-18T11:40:04.833 回答