有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

安卓 Java解析日期字符串返回错误的月份

我试图解析一个日期字符串,但却弄错了月份,为什么

new SimpleDateFormat("yyyy-MM-DD", Locale.US).parse("2018-03-08")

为什么这个月返回一月

请查看屏幕截图:

enter image description here


共 (5) 个答案

  1. # 1 楼答案

    我在下面尝试了这个方法,通过将DD更改为dd它工作得很好

    try {
                Date date=  new SimpleDateFormat("yyyy-MM-dd",Locale.US).parse("2018-03-08");
    
                Calendar calendar= Calendar.getInstance();
                calendar.setTime(date);
                Log.d("MONTH ","" + calendar.get(Calendar.MONTH));
    
    
    
            } catch (ParseException e) {
                e.printStackTrace();
            }
    
  2. # 2 楼答案

    为什么不使用^{} API

    LocalDate localDate = LocalDate.parse("2018-03-08");
    

    如果要将LocalDate转换为java.util.Date,可以按照this answer进行操作

  3. # 3 楼答案

    看看这个tutorial如果你试图显示月份名称,你应该使用3个M,这不是一天的标准d而不是D

    我建议试试yyyy-MMM-dd

  4. # 4 楼答案

    您需要使用dd而不是DD

    试试这个:-

    new SimpleDateFormat("yyyy-MM-dd", Locale.US).parse("2018-03-08");
    
  5. # 5 楼答案

    这是因为您使用的格式是"yyyy-MM-DD"。解析器将按顺序进行解析:

    • 您的输入值是"2018-03-08"
    • yyyy-将带来2018年
    • MM-将带来三月

    但是什么是DD?这是从年初开始的天数。 因此,它移回了今年(2018年)的第8天,也就是1月8日

    这就是为什么你看到的是一月而不是三月