属性以返回格式化的单独的月、日、年属性

本文关键字:属性 返回 单独 格式化 | 更新日期: 2023-09-27 18:24:58

这个让我很困惑,因为我认为这不能用简单的DateTime方法来完成,除非有我不理解的地方。

它应该像这样简单:以XX/XX/XXXX格式格式化要读取的变量,如果其中一个整数为0,控制台输出应该读取~~unspecified~~

   namespace TheTime
    {
        public class Time
        {
            private int month;
            private int day;
            private int year;
            public int Mont{}
            public int Day {}
            public int Year {}

属性以返回格式化的单独的月、日、年属性

你到底是什么意思还不太清楚。但是,如果你想从控制台读取日期,如果不成功,就失败了,你可以这样做:

string dateString = …;
DateTime date;
if (!DateTime.TryParseExact(
    dateString, "dd/MM/yyyy",
     CultureInfo.InvariantCulture, DateTimeStyles.None, out date))
{
    Console.WriteLine("~~unspecified~~");
    return;
}
//work with date

如果dateString在任何部分中包含0,或者格式不正确,则此代码将写入~~unspecified~~,并且不会继续。

将此方法添加到Time类中。

public string FormattedDate()
{
    if (month == 0 || day == 0 || year == 0)
        return string.empty;
    DateTime dt = new DateTime(year, month, day);
    return dt.ToString("d"); // returns mm/dd/yyyy
}

然后使用它:

string sDate = myTimeObj.FormattedDate();
if(sDate == string.empty)
{
   Console.WriteLine("~~unspecified~~");
}
else
{
   // it worked fine
}
public class Time
{
     private int month;
     private int day;
     private int year;
     public override string ToString()
     {
           if(month == 0 || day == 0 || year == 0)
           {
                 return "~~unspecified~~";
           }
           DateTime date = new DateTime(year, month, day);
           return date.ToString();
     }
}

您需要使用ReadLine 获取字符串

U可以使用类似的ParseExact方法

DateTime yourdate = DateTime.ParseExact(your_read_string, "dd/MM/yyyy", CultureInfo.InvariantCulture)