c # определяет, является ли строка длинной или DateTime перед преобразованием - PullRequest
0 голосов
/ 10 октября 2018

У меня есть код:

if(DateTime.TryParse(objString, out DateTime result))
{
    // ...
}
else if (long.TryParse(objString, out long result))
{
    // ...
} 
else
{
    // ...
}

Если objString = "782,4" DateTime TryParse в порядке, и в результате у меня "782-04-01 00:00:00"

Как я могу это исправить?

Ответы [ 2 ]

0 голосов
/ 10 октября 2018

Самое простое решение - просто изменить порядок проверки строки.

Вместо:

if(DateTime.TryParse(objString, out DateTime result))
{
    // ...
}
else if (long.TryParse(objString, out long result))
{
    // ...
} 
else
{
    // ...
}

Просто измените порядок вашего ifоператоры:

if (long.TryParse(objString, out long result))
{
    // ...
}
else if (DateTime.TryParse(objString, out DateTime result))
{
    // ...
} 
else
{
    // ...
}

Как я уже говорил в моем комментарии, вы должны использовать double.TryParse, если вы хотите вычислять числа с плавающей запятой

Так что, возможно, используйте это вместо:

if (double.TryParse(objString, out double dblResult))
{
    // ...
}
else if (DateTime.TryParse(objString, out DateTime dateTimeResult))
{
    // ...
} 
else
{
    // ...
}
0 голосов
/ 10 октября 2018

Попробуйте указать культуру:

DateTime.TryParse(objString, Thread.CurrentThread.CurrentCulture, System.Globalization.DateTimeStyles.None, out result)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...