将字符串转换为两个类之间的DateTime

时间:2018-04-30 04:55:57

标签: c#

对于我正在进行的项目,我必须在一个单独的Person类中包含一个人的所有详细信息,其中包括DOB的DateTime。 Person类的代码是:

<outbound-socket-binding name="jms-http">
    <remote-destination host="220.110.33.69" port="8080"/>
</outbound-socket-binding>

程序类中的输入将是

<http-connector name="http-connector" endpoint="http-acceptor" socket-binding="jms-http"/>

这就是我尝试将字符串转换为DateTime的原因。但是,在Person类中,它出现了

的错误CS1061
public Customer(string firstName, string lastName, string address, string 
dateOfBirth, string contactNumber, string email)
    {
        _FirstName = firstName;
        _LastName = lastName;
        _Address = address;
        _DateOfBirth = dateOfBirth;
        _ContactNumber = contactNumber;
        _Email = email;
    }

private string _DateOfBirth;
    public string DateOfBirth
    {
        get { return _DateOfBirth; }
        set { _DateOfBirth = value.ToDateTime(); }
    }
public override string ToString()
    {
        return string.Format("Name: {0} {1}, Address: {2}, DOB: {3}, Contact: {3}, Email: {4}, Total Balance: 6", _LastName, _FirstName, _Address, _DateOfBirth, _ContactNumber, _Email /*Add total balance*/);
    }

我尝试修复它并查看具有类似问题的其他线程,但我无法想出任何东西。如果有更好的方法,或者只是修复错误,任何帮助都会很棒!

2 个答案:

答案 0 :(得分:0)

没有方法名称&#34; ToDateTime&#34;在字符串上。所以你需要代码来实现你的问题。

首先,您需要从检索到的字符串中解析string,以便可以提取实际的日期字符串。之后,提取的string需要转换为DateTime。以下代码可满足您的需求:

        var str = "Date of birth (DD / MM / YYYY): 02 / 10 / 1990, ";
        var regex = new Regex(@"\d\d \/ \d\d \/ \d\d\d\d");
        var match = regex.Match(str);

        var date = DateTime.ParseExact(match.ToString().Replace(" ", ""), "dd/MM/yyyy", System.Globalization.CultureInfo.InvariantCulture);

date变量是DateTime对象。所以在这里你可以在字符串类型上编写Extension来将指定的字符串转换为DateTime。

public static DateTime ToDateTime(this string myString)
    {

        var regex = new Regex(@"\d\d \/ \d\d \/ \d\d\d\d");
        var match = regex.Match(myString);

        var date = DateTime.ParseExact(match.ToString().Replace(" ", ""), "dd/MM/yyyy", System.Globalization.CultureInfo.InvariantCulture);
        return date;
    }

答案 1 :(得分:0)

这是另一种方法。

performAndWait