Действительное преобразование даты и времени из строки - PullRequest
0 голосов
/ 23 марта 2020

Я получаю сообщение об ошибке «Строка не была распознана как допустимый DateTime. Есть неизвестное слово, начинающееся с индекса 0.» но я не уверен, как причина.

                //Date and Age
            String months = Convert.ToString(txtMonth);
            String days = Convert.ToString(txtDay);
            String year = Convert.ToString(txtYear);
            String DOB = days + " " + months + " " + year;

            int age = AgeCalc(DOB);

  //Age Function
    private int AgeCalc(string date)
    {
        DateTime DOB = Convert.ToDateTime(date);
        DateTime Year = DateTime.Now;
        TimeSpan span = Year - DOB;
        DateTime Age = DateTime.MinValue.AddDays(span.Days);
        return Age.Year - 1;
    }

//Separate Box
            MessageBox.Show("First Name:" + fName + "\nLast Name:" + lName + "\nGender:" + gender + "\nAge:" +
                age + "\nHeight (in inches):" + height + "\nWeight (lbs):" + weight + "\nMax Heart Rate:" + heartRate +
                "\nTarget Heart Rate:" + targetRate + "\nBMI:" + BMI, "Result");

Более код предоставляется по запросу.

Ответы [ 2 ]

2 голосов
/ 23 марта 2020

Если вы хотите обнаружить, что пользователь ввел неправильное значение, попробуйте это

string[] formats = { "dd/MM/yyyy", "dd/M/yyyy", "d/M/yyyy", "d/MM/yyyy","dd/MM/yy", "dd/M/yy", "d/M/yy", "d/MM/yy"};
if (DateTime.TryParseExact(date, formats, System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None, out DateTime DOB))
{
    // DOB variable is ready to use
    Label1.Text = DOB.ToShortDateString();
} else {
    //error handling goes here
    Label1.Text = "ERROR: Invalid value";
}

DOB.ToShortDateString () преобразует обратно в строку.

2 голосов
/ 23 марта 2020

Предположим, что вы разрешаете пользователям только вводить правильное значение (допустимое целое число). Вы можете использовать это

new DateTime(Convert.ToInt32(txtYear), Convert.ToInt32(txtMonth), Convert.ToInt32(txtDay));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...