Я написал формулу в файле App.config, чтобы получить запись за 5 лет. Значение, которое я добавил в файл конфигурации: -(365*5).

В App.config я написал это так:
add key="From_Days" value="-(356*1)"

В программе назначается как :
int End_Days = (Convert.ToInt32(ConfigurationManager.AppSettings["From_Days"]));

Я получаю следующее исключение:
Input string was not in a correct format

Это произошло потому, что -(356*1) является строкой, и я присваиваю ее Int.

Пожалуйста, помогите мне получить значение как -1780, т.е. результат этого умножения в переменной "END_Days".

С уважением, SM

-3
Sarthak Mishra 28 Окт 2019 в 00:25
1
Вы не можете хранить формулу в int. Int принимает только числа, поэтому вы могли бы сохранить результаты выполнения формулы. Но синтаксический анализ формул сам по себе на самом деле не является тривиальной задачей. В лучшем случае вы могли бы делать такие вещи, как сохранение шаблона регулярного выражения или SQL-запроса, но последнее — особенно очень опасная игра.
 – 
Christopher
28 Окт 2019 в 00:32
Предложение: просто сохраните фактическую дату начала в конфигах (вместо рассчитанных дней). Достаточно просто выполнить расчет разницы дат в коде. Это, конечно, приведет к динамическому результату. Если вы хотите, чтобы временные рамки были статическими, просто сохраните количество дней 1780 вместо расчета, который приводит к этому числу.
 – 
Anu6is
28 Окт 2019 в 02:18
Вы продолжаете транспонировать 365 в 356. Кроме того, в течение 5 лет один год будет високосным и будет иметь 366 дней. Лучше пусть функции DateTime позаботятся об этом за вас.
 – 
Mary
29 Окт 2019 в 07:07

1 ответ

Значение в вашей конфигурации должно быть -1780.

 <add key="From_Days" value="-1780"/> <!-- About 5 years -->

Обратите внимание, что 5 лет не всегда -1780 дней. Вы можете сохранить количество дней, а затем вычислить дату в прошлом с помощью .AddYears(yearsInConfig).

1
tymtam 28 Окт 2019 в 01:39