【发布时间】:2020-08-08 12:21:12
【问题描述】:
我正在制作一个有趣的 Discord 机器人,它可以在时钟上找到下一个 4:20,无论是上午还是下午,并告诉你距离 4:20 还有多长时间。我的代码在 4:20 前一个小时之前运行良好,然后它会向前跳并告诉下一个 4:20 需要多长时间,而不是显示“0 小时 59 分钟”。我在想我如何格式化时间输出可能存在问题,但我对 C# 很陌生,也不知道如何解决它。我已经包含了我的代码以及当前输出的屏幕截图。在屏幕截图中,机器人也有一分钟的时间,但从那时起我就想出了如何解决这个问题。我知道代码不是最高效或最干净的,但我还是对编程很陌生。
//Finds next 4:20 on the clock
[Command("420")]
public async Task WeedMinute()
{
DateTime currentTime = DateTime.Now; //Current time
DateTime weedMinuteMorning = Convert.ToDateTime("4:21:00"); //4:20am
DateTime weedMinuteEvening = Convert.ToDateTime("16:21:00"); //4:20pm
string weedMinutePM = "16:21:00"; //These variables are used in subtraction
string weedMinuteAM = "4:21:00";
if (currentTime <= weedMinuteEvening)
{
//chooseMorningEvening is the output time string
DateTime chooseMorningEvening = (DateTime.Parse(weedMinutePM).Subtract(currentTime.TimeOfDay));
await Context.Channel.SendMessageAsync("The next weed minute will happen in " + chooseMorningEvening.ToString(@"hh") + " hours " + chooseMorningEvening.ToString(@"mm") + " minutes.");
}
else if (currentTime >= weedMinuteMorning)
{
//chooseMorningEvening is the output time string
DateTime chooseMorningEvening = (DateTime.Parse(weedMinuteAM).Subtract(currentTime.TimeOfDay));
await Context.Channel.SendMessageAsync("The next weed minute will happen in " + chooseMorningEvening.ToString(@"hh") + " hours " + chooseMorningEvening.ToString(@"mm") + " minutes.");
}
}
【问题讨论】:
-
我认为从 currentTime 中删除 TimeOfDay 就足够了
标签: c# datetime time subtraction discord.net