/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
{
// obtenemos la fecha
// restamos un mes
// calculamos el primer dia del mes anterior
Calendar inicioMesAnterior
= resetCalenderTime
((Calendar)fecha.
clone()); // clonamos la fecha inicioMesAnterior.
set(Calendar.
DAY_OF_MONTH, inicioMesAnterior.
getActualMinimum(Calendar.
DAY_OF_MONTH)); // calculamos el ultimo dia del mes anterior
finMesAnterior.
set(Calendar.
DAY_OF_MONTH, inicioMesAnterior.
getActualMaximum(Calendar.
DAY_OF_MONTH));
System.
out.
println("Fecha inicio mes anterior: " + inicioMesAnterior.
getTime()); System.
out.
println("Fecha fin mes anterior: " + finMesAnterior.
getTime()); }
return calendar;
}
calendar.
set(Calendar.
MILLISECOND,
999); return calendar;
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lCnsKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJpbmdbXSBhcmdzKSB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbgoJewoJCS8vIG9idGVuZW1vcyBsYSBmZWNoYQoJCUNhbGVuZGFyIGZlY2hhID0gQ2FsZW5kYXIuZ2V0SW5zdGFuY2UoKTsKCQkvLyByZXN0YW1vcyB1biBtZXMKCQlmZWNoYS5hZGQoQ2FsZW5kYXIuTU9OVEgsIC0xKTsKCQkvLyBjYWxjdWxhbW9zIGVsIHByaW1lciBkaWEgZGVsIG1lcyBhbnRlcmlvcgoJCUNhbGVuZGFyIGluaWNpb01lc0FudGVyaW9yID0gcmVzZXRDYWxlbmRlclRpbWUoKENhbGVuZGFyKWZlY2hhLmNsb25lKCkpOyAvLyBjbG9uYW1vcyBsYSBmZWNoYQoJCWluaWNpb01lc0FudGVyaW9yLnNldChDYWxlbmRhci5EQVlfT0ZfTU9OVEgsIGluaWNpb01lc0FudGVyaW9yLmdldEFjdHVhbE1pbmltdW0oQ2FsZW5kYXIuREFZX09GX01PTlRIKSk7CgkJLy8gY2FsY3VsYW1vcyBlbCB1bHRpbW8gZGlhIGRlbCBtZXMgYW50ZXJpb3IKCQlDYWxlbmRhciBmaW5NZXNBbnRlcmlvciA9IHJlc2V0Q2FsZW5kZXJUaW1lMigoQ2FsZW5kYXIpZmVjaGEuY2xvbmUoKSk7IAoJCWZpbk1lc0FudGVyaW9yLnNldChDYWxlbmRhci5EQVlfT0ZfTU9OVEgsIGluaWNpb01lc0FudGVyaW9yLmdldEFjdHVhbE1heGltdW0oQ2FsZW5kYXIuREFZX09GX01PTlRIKSk7CiAgICAKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkZlY2hhIGluaWNpbyBtZXMgYW50ZXJpb3I6ICIgKyBpbmljaW9NZXNBbnRlcmlvci5nZXRUaW1lKCkpOwoJICAgIFN5c3RlbS5vdXQucHJpbnRsbigiRmVjaGEgZmluIG1lcyBhbnRlcmlvcjogIiArIGZpbk1lc0FudGVyaW9yLmdldFRpbWUoKSk7Cgl9CgkKCXB1YmxpYyBzdGF0aWMgQ2FsZW5kYXIgcmVzZXRDYWxlbmRlclRpbWUoQ2FsZW5kYXIgY2FsZW5kYXIpIHsKICAgICAgICBjYWxlbmRhci5zZXQoQ2FsZW5kYXIuSE9VUl9PRl9EQVksIDApOwogICAgICAgIGNhbGVuZGFyLnNldChDYWxlbmRhci5NSU5VVEUsIDApOwogICAgICAgIGNhbGVuZGFyLnNldChDYWxlbmRhci5TRUNPTkQsIDApOwogICAgICAgIGNhbGVuZGFyLnNldChDYWxlbmRhci5NSUxMSVNFQ09ORCwgMCk7CiAgICAgICAgcmV0dXJuIGNhbGVuZGFyOwogICAgfQogICAgCiAgICBwdWJsaWMgc3RhdGljIENhbGVuZGFyIHJlc2V0Q2FsZW5kZXJUaW1lMihDYWxlbmRhciBjYWxlbmRhcikgewogICAgICAgIGNhbGVuZGFyLnNldChDYWxlbmRhci5IT1VSX09GX0RBWSwgMjMpOwogICAgICAgIGNhbGVuZGFyLnNldChDYWxlbmRhci5NSU5VVEUsIDU5KTsKICAgICAgICBjYWxlbmRhci5zZXQoQ2FsZW5kYXIuU0VDT05ELCA1OSk7CiAgICAgICAgY2FsZW5kYXIuc2V0KENhbGVuZGFyLk1JTExJU0VDT05ELCA5OTkpOwogICAgICAgIHJldHVybiBjYWxlbmRhcjsKICAgIH0KfQ==