我正在编写一个代码,我可以按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循环中,我决定只包含问题的必要部分。
答案 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
}