Я не хочу преобразовывать строковый объект календаря (calendar.toString()) в объект календаря. Я попробовал это решение, но в консоли отображается дата дня «12-05-2017», а не «02-02-2017».
Строковый формат объекта календаря:
java.util.GregorianCalendar[time=1485993600000,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Африка/Касабланка",offset=0,dstSavings=3600000,useDaylight= true,transitions=102,lastRule=java.util.SimpleTimeZone[id=Africa/Casablanca,offset=0,dstSavings=3600000,useDaylight=true,startYear=0,startMode=2,startMonth=2,startDay=-1,startDayOfWeek =1,startTime=7200000,startTimeMode=0,endMode=2,endMonth=9,endDay=-1,endDayOfWeek=1,endTime=10800000,endTimeMode=0]],firstDayOfWeek=2,minimalDaysInFirstWeek=4,ERA=1, ГОД = 2017, МЕСЯЦ = 1, НЕДЕЛЯ_ГОД = 5, НЕДЕЛЯ_МЕСЯЦ = 1, ДЕНЬ_ОФ_МЕСЯЦ = 2, ДЕНЬ_ОФ_ГОД = 33, ДЕНЬ_НЕДЕЛИ = 5, ДЕНЬ_НЕДЕЛИ_В_МЕСЯЦЕ = 1, AM_PM = 0, ЧАС = 0, ЧАС_ОФ_ДЕНЬ = 0, МИНУТА = 0, СЕКУНДЫ = 0, МИЛЛИСЕКУНД = 0, ZONE_OFFSET = 0, DST_OFFSET = 0]
Calendar calendar = GregorianCalendar.getInstance();
calendar.setTime(new Date("2017/02/02"));
System.out.println("calendar : "+calendar.getTime());
try {
GregorianCalendar gc = new GregorianCalendar();
DateFormat formatter = new SimpleDateFormat("dd-MM-yyyy");
System.out.println("calendar : "+calendar.getTime());
gc.setTimeZone(TimeZone.getTimeZone(calendar.toString()));
System.out.println("tme zone : "+gc.getTimeZone());
System.out.println("calendar : "+calendar.getTime());
System.out.println("calendar : "+calendar.toString());
System.out.println(formatter.format(gc.getTime()));
}
catch(Exception e) {
//If exception, return server TimeStamp
}
Любая помощь, пожалуйста
String
, но я бы не стал пытаться анализировать значениеtoString
изCalendar
... Я бы также предложил взглянуть на новый Java Time API, так как он поддерживает и количество форматов ISO из коробки - person MadProgrammer   schedule 12.05.2017Calendar
является абстрактным классом, аGregorianCalendar
является наиболее широко используемым подклассом. Если вы знаете только, что у вас есть объектCalendar
, у вас может быть экземпляр другого подкласса с совершенно другим методомtoString
. Вы вызываетеGregorianCalendar.getInstance()
, но это вызовCalendar.getInstance()
и не гарантирует экземплярGregorianCalendar
. - person Ole V.V.   schedule 12.05.2017java.time.LocalDate
вместоGreforianCalendar
.LocalDate.parse()
легко разберет строку изLocalDate.toString()
. - person Ole V.V.   schedule 12.05.2017GregorianCalendar
, или, по крайней мере, вы можете приблизиться, но это потребует много работы по разбору. - person Ole V.V.   schedule 12.05.2017