创建一个Time类,具有以下成员:
(1)int类型字段hour, minute, second;
(2)int类型属性Hour, Minute, Second,其中,要求在set访问器对用户提供的值进行校验,Hour在0-23之间,Minute和Second均在0-59之间。被赋其它值时抛出异常,抛出方法:
throw new ArgumentOutOfRangeException(nameof(value), value,
$"{nameof(Hour)} must be 0 - 23");
(3)编写无参构造函数和三参构造函数。无参构造函数调用三参构造函数。为参数提供默认值0;
(4)编写Time Next(int hour, int minute, int second)函数,在现有时间上加上参数指定时间段后,返回新的时间信息;
(5)编写string ToUniversalString()方法,输出24时制的时分秒信息;
(6)编写string ToString()方法,加上override修饰,输出12时制的时间信息,并添加AM和PM后缀。
测试代码和输出如下所示:
var t1 = new Time2();
var t2 = new Time2(2);
var t3 = new Time2(21, 34);
var t4 = new Time2(12, 25, 42);
var t5 = new Time2(t4);
t5.Hour = 15;
var t6 = t5.Next(10, 40, 0);
Console.WriteLine("t1:");
Console.WriteLine($"{t1.ToUniversalString()}");
Console.WriteLine($"{t1.ToString()}\n");
Console.WriteLine("t2:");
Console.WriteLine($"{t2.ToUniversalString()}");
Console.WriteLine($"{t2.ToString()}\n");
Console.WriteLine("t3:");
Console.WriteLine($"{t3.ToUniversalString()}");
Console.WriteLine($"{t3.ToString()}\n");
Console.WriteLine("t4:");
Console.WriteLine($"{t4.ToUniversalString()}");
Console.WriteLine($"{t4.ToString()}\n");
Console.WriteLine("t5:");
Console.WriteLine($"{t5.ToUniversalString()}");
Console.WriteLine($"{t5.ToString()}\n");
Console.WriteLine("t6:");
Console.WriteLine($"{t6.ToUniversalString()}");
Console.WriteLine($"{t6.ToString()}\n");
代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp9
{
public class Time
{
int hour, minute, second;
public int Hour
{
get { return hour; }
set
{
if (value >= 0 && value <= 23)
{
hour = value;
}
else
{
throw new ArgumentOutOfRangeException(nameof(value), value, $"{nameof(Hour)} must be 0 - 23");
}
}
}
public int Minute
{
get { return minute; }
set
{
if (value >= 0 && value <= 59)
{
minute = value;
}
else
{
throw new ArgumentOutOfRangeException(nameof(value), value, $"{nameof(Minute)} must be 0 - 59");
}
}
}
public int Second
{
get { return second; }
set
{
if (value >= 0 && value <= 59)
{
second = value;
}
else
{
throw new ArgumentOutOfRangeException(nameof(value), value, $"{nameof(Second)} must be 0 - 59");
}
}
}
public Time(int h=0, int m=0, int s=0)
{
hour = h;
minute = m;
second = s;
}
public Time() : this(0, 0, 0) { }
public Time(Time t) : this(t.hour,t.minute,t.second) { }
//在现有时间上加上参数指定时间段后,返回新的时间信息;
public Time Next(int hour1, int minute1, int second1)
{
if (Second + second1 <= 59)
{
second1 = Second + second1;
if (Minute + minute1 <= 59)
{
minute1 = Minute + minute1;
if (Hour + hour1 <= 23)
{
hour1 = Hour + hour1;
}
else
hour1 = Hour + hour1 - 24;
}
else
{
minute1 = Minute + minute1 - 60;
if (Hour + hour1 <= 23)
{
hour1 = Hour + hour1 + 1;
}
else
{
hour1 = Hour + hour1 + 1 - 24;
}
}
}
else
{
second1 = Second + second1 - 60;
if (Minute + minute1 <= 59)
{
minute1 = Minute + minute1 + 1;
if (Hour + hour1 <= 23)
{
hour1 = Hour + hour1;
}
else
hour1 = Hour + hour1 - 24;
}
else
{
minute1 = Minute + minute1 +1 - 60;
if (Hour + hour1 <= 23)
{
hour1 = Hour + hour1 + 1;
}
else
{
hour1 = Hour + hour1 + 1 - 24;
}
}
}
Time T = new Time(hour1, minute1, second1);
return T;
}
//输出24时制的时分秒信息
public string ToUniversalString() =>
$"{Hour,02}:{Minute,02}:{Second,02}";//02意思是占两位
//输出12时制的时间信息,并添加AM和PM后缀
public override string ToString()
{
if (hour < 12)
{
return $"{Hour,02}:{Minute,02}:{Second,02}AM";
}
else if (hour == 12)
{
return $"{Hour,02}:{Minute,02}:{Second,02}PM";
}
else
{
return $"{Hour - 12,02}:{Minute,02}:{Second,02}PM";
}
}
static void Main(string[] args)
{
var t1 = new Time();
var t2 = new Time(2);
var t3 = new Time(21, 34);
var t4 = new Time(12, 25, 42);
var t5 = new Time(t4);
t5.Hour = 15;
var t6 = t5.Next(10, 40, 0);
Console.WriteLine("t1:");
Console.WriteLine($"{t1.ToUniversalString()}");
Console.WriteLine($"{t1.ToString()}\n");
Console.WriteLine("t2:");
Console.WriteLine($"{t2.ToUniversalString()}");
Console.WriteLine($"{t2.ToString()}\n");
Console.WriteLine("t3:");
Console.WriteLine($"{t3.ToUniversalString()}");
Console.WriteLine($"{t3.ToString()}\n");
Console.WriteLine("t4:");
Console.WriteLine($"{t4.ToUniversalString()}");
Console.WriteLine($"{t4.ToString()}\n");
Console.WriteLine("t5:");
Console.WriteLine($"{t5.ToUniversalString()}");
Console.WriteLine($"{t5.ToString()}\n");
Console.WriteLine("t6:");
Console.WriteLine($"{t6.ToUniversalString()}");
Console.WriteLine($"{t6.ToString()}\n");
}
}
}