public static void Main()
var date1 = new DateTime(2019, 01, 31);
Console.WriteLine($"Início vigência antiga: {date1.ToString("dd/MM/yyyy HH:mm:ss")}");
Console.WriteLine($" Fim vigência antiga: {ToEndDate(date1.AddMonths(1).AddDays(-1))}");
var date2 = date1.AddMonths(1);
Console.WriteLine($"Início vigência nova: {date2.ToString("dd/MM/yyyy HH:mm:ss")}");
var date3 = date2.AddMonths(1).AddDays(-1);
Console.WriteLine($" Fim vigência nova: {ToEndDate(date3)}");
var date4 = new DateTime(2020, 01, 31);
Console.WriteLine($"Início vigência antiga: {date4.ToString("dd/MM/yyyy HH:mm:ss")}");
Console.WriteLine($" Fim vigência antiga: {ToEndDate(date4.AddMonths(1).AddDays(-1))}");
var date5 = date4.AddMonths(1);
Console.WriteLine($"Início vigência nova: {date5.ToString("dd/MM/yyyy HH:mm:ss")}");
var date6 = date5.AddMonths(1).AddDays(-1);
Console.WriteLine($" Fim vigência nova: {ToEndDate(date6)}");
public static string ToEndDate(DateTime value)
return new DateTime(value.Year, value.Month, value.Day, 23, 59, 59, DateTimeKind.Utc).ToString("dd/MM/yyyy HH:mm:ss");