[英]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}");
}
}
}
在我看來,您可以進行計算,而完全避免使用DateTime
或TimeSpan
。
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.