【问题标题】:Android date parsing (Extracting month and year )Android日期解析(提取月份和年份)
【发布时间】:2014-12-11 08:00:56
【问题描述】:

我希望我的应用以“dd-MMM-yyyy”格式解析日期。当我尝试获取月份并获取年份时,日期已成功解析,它给出了其他结果。我输入 06-sep-2014 作为日期。但是当我尝试从解析的日期中提取月份和年份时,它显示月份为 8 而不是 9 和年份为 114 而不是 2014 年。

logcat 输出

6

8

114

这是我的代码

    String date1 = "06 sep 2014";
    SimpleDateFormat format1 = new SimpleDateFormat("dd MMM yyyy");
    SimpleDateFormat format2 = new SimpleDateFormat("d MMM yyyy");

    Date date;

    try {
        if (date1.length() == 11) {
            date = format1.parse(date1);

        } else {
            date = format2.parse(date1);

        }
        int day=date.getDate();
        int  mon1=date.getMonth();
        int year1=date.getYear();

        System.out.println("date is:"+ date);

        System.out.println(day);
        System.out.println(mon1);
        System.out.println(year1);


    } catch (ParseException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

【问题讨论】:

    标签: android parsing date


    【解决方案1】:
    import java.text.DateFormat;
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    
    public final class DateParseDemo {
        public static void main(String[] args){
             final DateFormat df = new SimpleDateFormat("dd MMM yyyy");
             final Calendar c = Calendar.getInstance();
             try {
                 c.setTime(df.parse("06 sep 2014"));
                 System.out.println("Year = " + c.get(Calendar.YEAR));
                 System.out.println("Month = " + (c.get(Calendar.MONTH)));
                 System.out.println("Day = " + c.get(Calendar.DAY_OF_MONTH));
             } 
             catch (ParseException e) {
                 e.printStackTrace();
             }
        }
    }
    

    输出:

    • 年份 = 2014
    • 月 = 8
    • 天 = 6

    对于月份字段,这是从 0 开始的。这意味着一月 = 0 和十二月 = 11。正如 javadoc 所述,

    get 和 set 的字段编号,表示月份。这是特定于日历的值。公历和儒略历中的第一个月是 JANUARY,即 0;最后一个取决于一年中的月数。

    【讨论】:

      【解决方案2】:

      因为 date.getyear 返回一个值,该值是从包含或开始于此 Date 表示的时刻的年份减去 1900 的结果对象,以当地时区解释。

      也许,你可以用例如;

      int year1=date.getYear();
      System.out.println(year1+1900);

      【讨论】:

        【解决方案3】:

        使用 Date 类,它为您提供从 1900 年开始的年份。获得所需内容的更好方法是使用 Calendar 类。见http://developer.android.com/reference/java/util/Date.html#getYear()

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-05-19
          • 2021-10-02
          • 2018-02-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多