Вероятно, это неправильно:
PDate = (Calendar) json_data.get("PayDate");
PDate.add(Calendar.MONTH, 1);
String P = ""+PDate;
Во-первых, я сомневаюсь, что приведение из JSONObject в Calendar работает таким образом.«Значения могут быть любым сочетанием JSONObjects, других JSONArrays, Strings, Booleans, Integer, Longs, Doubles, null или NULL. Значения не могут быть NaN, бесконечностями или любого типа, не перечисленного здесь».( здесь )
Попробуйте:
String myDateString = json_data.getString("PayDate"); // you can get a date as String
Во-вторых, вы не можете получить дату в удобочитаемом формате следующим образом:
String P = ""+PDate;
Если вы хотите что-то добавить к своей дате, вам нужно преобразовать и преобразовать обратно, например:
// assuming that the format of your date is "yyyy-MM-dd"
//convert from String to Date
Date myDate = dateFormat.parse(myDateString);
//convert from Date to Calendar
PDate = Calendar.getInstance();
PDate.setTime(myDate);
//this adds 1 month to your Calendar object:
PDate.add(Calendar.MONTH, 1);
//this converts back from Calendar to Date object
myDate = PDate.getTime();
//this converts from Date to String
myDateString = dateFormat.format(myDate);
// and update text
Udate.setText(myDateString );
, если вы добавляете в PDate только один месяц, чтобы компенсировать тот факт, что он хранит значения месяца изОт 0 до 11, тогда вы можете просто сделать, как Dheeraj сказал