【问题标题】:Android SimpleDateFormat problemAndroid SimpleDateFormat 问题
【发布时间】:2011-09-13 08:53:39
【问题描述】:
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
Date date = (Date)formatter.parse("2011-09-13");
Log.e(MY_DEBUG_TAG, "Output is "+ date.getYear() + " /" + date.getMonth() + " / "+ (date.getDay()+1));

出来了

09-13 14:20:18.740: ERROR/GoldFishActivity(357): Output is 111 /8 / 3

有什么问题?

【问题讨论】:

    标签: java android date-format simpledateformat


    【解决方案1】:

    您在 Date 类中使用的方法已弃用。

    • 您会得到 111 的年份,因为 getYear() 返回的值是从年份中减去 1900 的结果,即 2011 - 1900 = 111
    • 您会得到 3 天,因为 getDay() 返回星期几和 3 = WednesdaygetDate() 返回月份中的某一天,但这也已被弃用。

    您应该改用Calendar 类。

    SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
    Date date = (Date)formatter.parse("2011-09-13");        
    Calendar cal = Calendar.getInstance();  
    cal.setTime(date);
    Log.e(MY_DEBUG_TAG, "Output is "+ cal.get(Calendar.YEAR)+ " /" + (cal.get(Calendar.MONTH)+1) + " / "+ cal.get(Calendar.DAY_OF_MONTH));
    

    【讨论】:

    • 为什么getYear() 返回year - 1900?为什么不只返回年份?
    【解决方案2】:

    仔细阅读javadoc of java.util.Date

    getYear 返回自 1900 年以来的年数。

    getMonth 返回月份,从 0 开始(0 = 一月,1 = 二月等)。

    getDay 返回星期几(0 = 星期日,1 = 星期一等),而不是月份。

    所有这些方法都已弃用。你不应该再使用它们了。

    【讨论】:

      猜你喜欢
      • 2011-08-09
      • 1970-01-01
      • 1970-01-01
      • 2011-04-07
      • 1970-01-01
      • 1970-01-01
      • 2016-06-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多