C# 用于计算事件开始前的时间(以天为单位)的程序
我写了一个程序,计算事件发生前的天数,可能有几个事件,我想知道如何减少或简化这段代码C# 用于计算事件开始前的时间(以天为单位)的程序,c#,datetime,events,C#,Datetime,Events,我写了一个程序,计算事件发生前的天数,可能有几个事件,我想知道如何减少或简化这段代码 namespace Determining_the_time_before_the_event_starts { class Program { struct Event { public string name; public DateTime time; } static Event[] InPutEvents()
namespace Determining_the_time_before_the_event_starts
{
class Program
{
struct Event
{
public string name;
public DateTime time;
}
static Event[] InPutEvents()
{
Console.Write("Number of events: ");
int n, year, month, day, hour, min;
n = int.Parse(Console.ReadLine());
Event[] time = new Event[n];
for(int i=0; i<n; i++)
{
Console.Write("Event name: ");
time[i].name = Console.ReadLine();
Console.Write("Event start year: ");
year = int.Parse(Console.ReadLine());
Console.Write("Month of the beginning of the event: ");
month = int.Parse(Console.ReadLine());
Console.Write("The first day of the event: ");
day = int.Parse(Console.ReadLine());
Console.Write("Watch the beginning of the event: ");
hour = int.Parse(Console.ReadLine());
Console.Write("Minutes before the event starts: ");
min = int.Parse(Console.ReadLine());
time[i].time = new DateTime(year, month, day, hour, min, 0);
Console.WriteLine();
}
return time;
}
static void Main(string[] args)
{
Event[] time = InPutEvents();
Console.WriteLine();
BeginEvent(time);
Console.ReadLine();
}
static void BeginEvent (Event[] time)
{
DateTime now = DateTime.Now;
for(int i = 0; i < time.Length; i++)
{
SearchTime(time[i], now);
Console.WriteLine();
}
}
static void SearchTime(Event time, DateTime now)
{
int year, month, day, hour, min;
year = time.time.Year - now.Year;
month = time.time.Month - now.Month;
day = time.time.Day - now.Day;
hour = time.time.Hour - now.Hour;
min = time.time.Minute - now.Minute;
if (min < 0)
{
min += 60;
hour--;
}
if (min > 60)
{
min -= 60;
hour++;
}
if (hour < 0)
{
hour += 24;
day--;
}
if (hour > 24)
{
hour -= 24;
day++;
}
if (day < 1)
{
day += 31;
month--;
}
if (day > 31)
{
day -= 31;
month++;
}
if (month < 1)
{
month += 12;
year--;
}
if (month > 12)
{
month -= 12;
year++;
}
day += (month * 31) + (year * 365);
Console.WriteLine($"Event {time.name} starts in {day} days, {hour}hours, and {min}m. ");
}
}
}
namespace在事件开始之前确定时间
{
班级计划
{
结构事件
{
公共字符串名称;
公共日期时间;
}
静态事件[]InPutEvents()
{
Console.Write(“事件数:”);
整数n,年,月,日,小时,分钟;
n=int.Parse(Console.ReadLine());
事件[]时间=新事件[n];
对于(int i=0;i 60)
{
min-=60;
小时++;
}
如果(小时<0)
{
小时+=24;
天——;
}
如果(小时>24小时)
{
小时-=24;
day++;
}
如果(第1天)
{
天数+=31天;
月--;
}
如果(第31天)
{
第31天;
月份++;
}
如果(月份<1)
{
月份+=12;
年--;
}
如果(月份>12)
{
月份-=12;
年份++;
}
天+=(月*31)+(年*365);
WriteLine($“事件{time.name}以{day}天、{hour}小时和{min}m.开始”;
}
}
}
从另一个DateTime
对象中减去一个DateTime
对象将创建一个TimeSpan
对象。TimeSpan
对象具有诸如Days
、Hours
、Minutes
等属性
只需使用这些属性即可构建所需的解决方案
private static void SearchTime(Event event, DateTime now)
{
var diff = event.time - now;
Console.WriteLine($"Event {event.name} starts in {diff.Days} days, {diff.Hours}hours, and {diff.Minutes}m. ");
}
“我想知道如何减少或简化这段代码”-->您有两个DateTime(一个在事件结构中,另一个在DateTime.Now中),只是为了得到.private静态void PrintTimeDiff(DateTime,DateTime Now){var eventName=“TestEvent”;var diff=time-Now;Console.WriteLine($”事件{eventName}以{diff.Days}天、{diff.Hours}小时和{diff.Minutes}m.''开始;}