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.''开始;}