using System;
using static System.Console;
public class Program {
public static void Main() {
var data = new DateTime(2015, 8, 15);
WriteLine(FirstDayPreviousMonth(data));
WriteLine(LastDayPreviousMonth(data));
data = new DateTime(2015, 3, 15);
WriteLine(FirstDayPreviousMonth(data));
WriteLine(LastDayPreviousMonth(data));
data = new DateTime(2016, 3, 15);
WriteLine(FirstDayPreviousMonth(data));
WriteLine(LastDayPreviousMonth(data));
}
public static DateTime FirstDayPreviousMonth(DateTime date) {
var mesAnterior = date.AddMonths(-1);
return new DateTime(mesAnterior.Year, mesAnterior.Month, 1);
}
public static DateTime LastDayPreviousMonth(DateTime date) {
var mesAnterior = date.AddMonths(-1);
return new DateTime(mesAnterior.Year, mesAnterior.Month, DateTime.DaysInMonth(mesAnterior.Year, mesAnterior.Month));
}
}
//https://pt.stackoverflow.com/q/80330/101
dXNpbmcgU3lzdGVtOwp1c2luZyBzdGF0aWMgU3lzdGVtLkNvbnNvbGU7CgkJCQkJCnB1YmxpYyBjbGFzcyBQcm9ncmFtIHsKCXB1YmxpYyBzdGF0aWMgdm9pZCBNYWluKCkgewoJCXZhciBkYXRhID0gbmV3IERhdGVUaW1lKDIwMTUsIDgsIDE1KTsKCQlXcml0ZUxpbmUoRmlyc3REYXlQcmV2aW91c01vbnRoKGRhdGEpKTsKCQlXcml0ZUxpbmUoTGFzdERheVByZXZpb3VzTW9udGgoZGF0YSkpOwoJCWRhdGEgPSBuZXcgRGF0ZVRpbWUoMjAxNSwgMywgMTUpOwoJCVdyaXRlTGluZShGaXJzdERheVByZXZpb3VzTW9udGgoZGF0YSkpOwoJCVdyaXRlTGluZShMYXN0RGF5UHJldmlvdXNNb250aChkYXRhKSk7CgkJZGF0YSA9IG5ldyBEYXRlVGltZSgyMDE2LCAzLCAxNSk7CgkJV3JpdGVMaW5lKEZpcnN0RGF5UHJldmlvdXNNb250aChkYXRhKSk7CgkJV3JpdGVMaW5lKExhc3REYXlQcmV2aW91c01vbnRoKGRhdGEpKTsKCX0KCXB1YmxpYyBzdGF0aWMgRGF0ZVRpbWUgRmlyc3REYXlQcmV2aW91c01vbnRoKERhdGVUaW1lIGRhdGUpIHsKCSAgICB2YXIgbWVzQW50ZXJpb3IgPSBkYXRlLkFkZE1vbnRocygtMSk7CgkJcmV0dXJuIG5ldyBEYXRlVGltZShtZXNBbnRlcmlvci5ZZWFyLCBtZXNBbnRlcmlvci5Nb250aCwgMSk7IAoJfQoJcHVibGljIHN0YXRpYyBEYXRlVGltZSBMYXN0RGF5UHJldmlvdXNNb250aChEYXRlVGltZSBkYXRlKSB7CgkgICAgdmFyIG1lc0FudGVyaW9yID0gZGF0ZS5BZGRNb250aHMoLTEpOwoJCXJldHVybiBuZXcgRGF0ZVRpbWUobWVzQW50ZXJpb3IuWWVhciwgbWVzQW50ZXJpb3IuTW9udGgsIERhdGVUaW1lLkRheXNJbk1vbnRoKG1lc0FudGVyaW9yLlllYXIsIG1lc0FudGVyaW9yLk1vbnRoKSk7Cgl9Cn0KCi8vaHR0cHM6Ly9wdC5zdGFja292ZXJmbG93LmNvbS9xLzgwMzMwLzEwMQ==