Преобразовать в DateTime из двух строковых переменных в C # - PullRequest
0 голосов
/ 06 июня 2018

Я хочу преобразовать две строковые переменные в переменную DateTime.Итак, что-то вроде этого ...

string day = "05";
string month = "11";
Convert.ToDateTime(day + month + "0000");

Затем он будет загружен на SQL-тип данных smalldatetime.Есть какой-либо способ сделать это?Я видел, как некоторые люди используют ParseExact, но они используют его с идеальным форматом даты, никогда не создавая его из двух строк, как я хочу.Кто-нибудь знает, как это сделать?

Ответы [ 2 ]

0 голосов
/ 06 июня 2018

День и месяц имеют значение только в том виде, в котором они обозначают окончание учебного года, в моем заявлении будут приниматься месяц и день.

Если вы не используете какие-либоyear, не используйте тип даты и времени!

Формату dateTime понадобится год, как уже говорилось, а использование фальшивого просто передаст много ложной информации вместе с ним.(например, день недели, понедельник, вторник, ...).Конечно, вы не хотите его использовать, и, вероятно, не захотите, но вы можете стать жертвой некоторой ошибки дисплея и других нежелательных последствий.

Я бы посоветовал вам просто использовать два целых числаполя, одно для дня и одно для месяца.

Для проверки цель, вы можете внутренне использовать некоторый dateTime после другого принятого ответа, например.Это был бы один из способов предотвратить «31 апреля».

Но я рекомендую вам избегать хранения поддельного года в вашей БД вместе со сложным типом, который может вызвать у вас больше проблем, чем необходимо в долгосрочной перспективе.


С другой стороны, если ваше приложение должно ссылаться на текущий год или другое конкретное значение, то используйте его, не фальсифицируйте его!

0 голосов
/ 06 июня 2018

Вы можете попробовать это:

string day   = "05";
string month = "11";
string year  = "0001";
DateTime dt  = 
 DateTime.ParseExact(day + "-" + month + "-" + year, "dd-MM-yyyy", CultureInfo.InvariantCulture);

Но год не должен быть 0.

'0001' год представляет только первый год.так что вы можете сказать, что до этой даты прошло 0 лет.

ОБНОВЛЕНИЕ

, как указано ниже Джими

smalldatetime идет с 1900-01-01 по 2079-06-06.ОП должен будет проверить этот диапазон перед преобразованием.

, вам нужно быть осторожным при разборе строки в Date, если вы используете smalldatetime, вы ограничены диапазоном "С 1900-01-01 по 2079-06-06 ", поэтому у вашего DateTime не может быть года 0001 в это время.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...