如何将datetime参数传递给条件方法?

时间:2018-04-20 08:32:37

标签: c# datetime

我正在研究面向对象的编程。我有一个班级Dob,它从主要读取出生日期。如果从main出生的日期是从10年前到现在,它说“错误”,否则“验证”。 这是我的班级

public DateTime _Dob;
private DateTime dob {
 get {
  return _Dob;
 }
 set {
  _Dob = value;
 }
}


public Student(DateTime dob_) {
 _Dob = dob;
}

public void checkdob(DateTime dob) {

 DateTime local = DateTime.Now;
 if (dob.Year >= local.Year - 10)) {
 Console.WriteLine("error");
} else {
 Console.WriteLine("verify");
}

现在我想从主要传递出生日期,但我不知道该怎么做。这是我的主要内容(它有错误,我不知道如何解决它):

Student dob = new Student(new DateTime(23/02/2010));
dob.checkdob( 02/12/2010);

Console.ReadLine();

3 个答案:

答案 0 :(得分:2)

首先,你有property错误的方法。我们的想法是通过公共属性公开私有字段的值,而不是相反:

private DateTime _dob;
public DateTime Dob
{
    get { return _dob; }
    set { _dob = value; }
}

但是如果你不使用公共财产,不要暴露它。

现在,将日期传递给您的类的构造函数似乎很奇怪,然后在您想要检查它时再次传递它。使用您已有的值。

    public void CheckDdob()
    {
        if (_dob.Year >= DateTime.Now.Year -10))
        { 
            Console.WriteLine("error"); 
        }
        else
        { 
            Console.WriteLine("verify"); 
        }
    }

然后,要为构造函数创建新的DateTime,只需使用以下内容:

Student dob = new Student(new DateTime(2010, 02, 23));

最后,您可能想要检查一下您的逻辑,因为如果日期超过10年,您 实际上无法正确检查。然后,您拥有的可能符合您的要求。

答案 1 :(得分:0)

您需要为DateTime使用正确的构造函数参数。其中有很多列出here

你可以先使用这个,

new DateTime(2010,02,23)

答案 2 :(得分:0)

只是一个如何解决这个问题的例子:

using System;

public class Student
{
    public Student(string name, DateTime dateOfBirth)
    {
        Name = name;
        DateOfBirth = dateOfBirth;
    }

    public string Name { get; private set; }
    public DateTime DateOfBirth { get; private set; }
}

public static class Helpers
{
    public static bool IsOlderThen(this DateTime date, TimeSpan age)
    {
        var now = DateTime.UtcNow;

        return now - date > age;
    }
}   

public class Program
{
    public static void Main()
    {
        var adult = TimeSpan.FromDays(365 * 18);
        var studentOld = new Student("Alice", DateTime.Parse("1998/04/17"));
        var studentYoung = new Student("Bob", DateTime.Parse("2015/04/17"));

        Console.WriteLine("isAdult: " + studentOld.DateOfBirth.IsOlderThen(adult));
        Console.WriteLine("isAdult: " + studentYoung.DateOfBirth.IsOlderThen(adult));
    }
}