如何在DateTime中每24小时自动添加一天

时间:2018-03-21 18:21:19

标签: c#

我正在编写一个代码,我可以按Enter键来提前当前时间。我已经成功实现了这一目标,但我需要每24小时推进一次。这是我的代码:

var time = new DateTime(2025, 4, 15, 12, 00, 0);

string currentDate = time.ToString("dd/MM/yyyy");
string currentTime = time.ToString("HH:mm");
int timeAdd = 4;

Console.WriteLine("Press 'Enter' to advance...");
ConsoleKeyInfo userInput = Console.ReadKey();

if (userInput.Key == ConsoleKey.Enter) {
currentTime = time.AddHours(timeAdd).ToString("HH:mm");
timeAdd = timeAdd + 4;

这个工作正常,但是每天00:00(或者如果我在例如22:00将时间提前3小时,然后在01:00),那么日值也应该增加1。在每月结束时,月份也应该增加,然后是一年。

要回答的可选问题是;有没有更好的方法来推进时间?如你所见,现在我将时间提前4,然后是8,然后是12,依此类推。那是因为我宣布之后无法将时间设置为任何东西,我每次都要再增加4个小时。

编辑:这不是完整的代码,而是在while循环中,我决定只包含问题的必要部分。

1 个答案:

答案 0 :(得分:4)

您的问题是DateTime是一个不可变的结构。应该修改它的每个方法都会返回一个新实例,然后你将它扔掉 请改用:

var time = new DateTime(2025, 4, 15, 12, 00, 0);

string currentDate = time.ToString("dd/MM/yyyy");
string currentTime = time.ToString("HH:mm");
int timeAdd = 4;

Console.WriteLine("Press 'Enter' to advance...");
ConsoleKeyInfo userInput = Console.ReadKey();

if (userInput.Key == ConsoleKey.Enter) 
{
    time = time.AddHours(timeAdd);
    currentDate = time.ToString("dd/MM/yyyy"); // refresh date
    currentTime = time.ToString("HH:mm"); // refresh time
}