簡體   English   中英

整數到日期時間或時間跨度翻倍

[英]Int to datetime or timespan to double

我需要制作一個讀取4個整數輸入的程序。

 int examHour
 int examMin
 int hourArrival
 int minuteArrival

然后我有3個選項Early,如果提前30分鍾或更長時間。 准時,如果學生准時或晚30分鍾。

我知道有一個> <方法可以做到這一點,但是我100%肯定有一種更聰明的DateTime或TimeSpan方法可以做到這一點。

如果學生早,則必須提前不到一小時寫早{minutes}。 HH:mm小時開始之前一個小時或更長時間。 晚{minutes}晚不到不到一個小時。 HH:mm小時遲到一個小時或更長時間。

namespace OnTime
{
    class Program
    {
        static void Main(string[] args)
        {
            int examHour = int.Parse(Console.ReadLine());
            int examMin  = int.Parse(Console.ReadLine());
            int hourArrival = int.Parse(Console.ReadLine());
            int minuteArrival = int.Parse(Console.ReadLine());

            string total = ($"{examHour}:{examMin}");
            string totald = ($"{hourArrival}:{minuteArrival}");


            DateTime arrival = new DateTime();
            arrival = DateTime.ParseExact(total, "H:m", null);
            string resultone = (arrival.ToString("H:mm"));

            DateTime exam = new DateTime();
            exam = DateTime.ParseExact(totald, "H:m", null);
            string resulttwo = (exam.ToString("H:mm"));

            DateTime starttime = Convert.ToDateTime(arrival);
            DateTime arrivaltime = Convert.ToDateTime(exam);

            Console.WriteLine ($"Early {HH:mm} before start")
            Console.WriteLine ($"Late {HH:mm} after start")    
        }
    }
}
using System;

namespace OnTime
{
    class Program
    {
        static void Main(string[] args)
        {
            int examHour = int.Parse(Console.ReadLine());
            int examMin  = int.Parse(Console.ReadLine());
            int hourArrival = int.Parse(Console.ReadLine());
            int minuteArrival = int.Parse(Console.ReadLine());

            string total = ($"{examHour}:{examMin}");
            string totald = ($"{hourArrival}:{minuteArrival}");

            DateTime arrival = new DateTime();
            arrival = DateTime.ParseExact(total, "H:m", null);

            DateTime exam = new DateTime();
            exam = DateTime.ParseExact(totald, "H:m", null);

            TimeSpan span = arrival - exam;
            int hours = span.Hours;
            int minutes = span.Minutes;
            string timediff = hours.ToString("0") + ":" + minutes.ToString("00");
            string minutesdiffOne = minutes.ToString("00");

            if (examHour < hourArrival && (examMin - minuteArrival < 30))
            Console.WriteLine("on time");
            Console.WriteLine($"{minutesdiff:F0}");
        }
    }
}


在我看來,您可以進行計算,而完全避免使用DateTimeTimeSpan

double exam = examHour + examMin / 60.0;
double arrival = hourArrival + minuteArrival / 60.0;

double delta = exam - arrival;

string status = delta > 0.5 ? "Early" : (delta < 0.0 ? "Late" : "On time");

這只會創建一個double值,其值為小時,十進制分數代表分鍾。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM