Ошибка в получении даты года, месяца, даты из объекта календаря - PullRequest
0 голосов
/ 07 марта 2012

Все это моя программа, где я пробую следующее

Ниже приведен мой код для функциональности Даты ...

import java.text.SimpleDateFormat;
import java.util.*;
import java.text.*;
public class DateToCalender {
public static void main(String args[]){
//String strFormat="yyyymmdd";

//DateFormat myDateFormat = new SimpleDateFormat(strFormat);
DateFormat df= new SimpleDateFormat("yyyyMMdd");
df.setLenient(false);
Calendar start=Calendar.getInstance();
try {
Date fromDt =(Date)df.parse("20111207");
//Date myDate = new Date();
//myDate = (Date)myDateFormat.parse("20111207");
//myGDate.setTime(myDate);
start.setTime(fromDt);

                start.set(Calendar.MONTH,(start.get(Calendar.MONTH)+1));
System.out.println(start);

System.out.println(start.get(Calendar.YEAR));
System.out.println(start.get(Calendar.MONTH)-1);
System.out.println(start.get(Calendar.DAY_OF_MONTH));
//System.out.println("From My class"+myGDate.get(Calendar.MONTH));

//System.out.println("From My class new month"+(myGDate.get(Calendar.MONTH)+1));

} catch (ParseException e) {
System.out.println("Invalid Date Parser Exception ");
e.printStackTrace();
}
} 
}  

когда я выполняю этот код, я получаю следующее o / p

java.util.GregorianCalendar[time=?,areFieldsSet=false,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Calcutta",offset=19800000,dstSavings=0,useDaylight=false,transitions=6,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA
=1,YEAR=2011,MONTH=12,WEEK_OF_YEAR=50,WEEK_OF_MONTH=2,DAY_OF_MONTH=7,DAY_OF_YEAR=341,DAY_OF_WEEK=4,DAY_OF_WEEK_IN_MONTH=1,AM_PM=0,HOUR=0,HOUR_OF_DAY=0,MINUTE=0,SECOND=0,MILLISECOND=0,ZONE_OFFSET=19800000,DST_OFFSET=0]
2011
0
7

** вопрос:

Though iam entering date as 2011/12/07
            I am getting     year as 2011
                             month as 0
                             date as 7
Can some one help in resolving above issue

Может ли какое-нибудь тело сообщить мне, как это можно решить.

Ответы [ 2 ]

3 голосов
/ 07 марта 2012

Не вычитайте 1 из месяца;Calendar уже знает, что оно основано на нуле.

Мне кажется, что вы делаете слишком много работы здесь.Почему вы не можете просто сделать это?

private static final DateFormat DEFAULT_DATE_FORMAT;

static {
    DEFAULT_DATE_FORMAT = new SimpleDateFormat("yyyyMMdd");
    DEFAULT_DATE_FORMAT.setLenient(false);
}



public Calendar getCalendar(String dateAsString) {
    Calendar value = Calendar.getInstance();
    Date d = DEFAULT_DATE_FORMAT.parse(dateAsString);
    value.setTime(d);
    return value;
}

Существует исключение, которое необходимо добавить к сигнатуре метода, но вы поняли идею.Посмотрите на Calendar Javadocs.Это может быть проще.

0 голосов
/ 07 марта 2012

установка условия для проверки месяца может решить вашу проблему:

try {    
Date fromDt =(Date)df.parse("20131209");
start.setTime(fromDt);
start.set(Calendar.MONTH,(start.get(Calendar.MONTH)));
int month = start.get((Calendar.MONTH));
if (month ==11){    
System.out.println(start.get(Calendar.YEAR));
System.out.println(start.get(Calendar.MONTH)+1);
System.out.println(start.get(Calendar.DAY_OF_MONTH));
}else{
start.set(Calendar.MONTH,(start.get(Calendar.MONTH))+1);   
System.out.println(start.get(Calendar.YEAR));
System.out.println(start.get(Calendar.MONTH));
System.out.println(start.get(Calendar.DAY_OF_MONTH));
}
}

, это распечатает:

2013

12

9

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...