Проблема в снипете (работа с датой)

Antares

Client
Регистрация
19.01.2018
Сообщения
131
Благодарностей
9
Баллы
18
Всем привет.

Проблема такая:
Есть снипет, который получает "дату минус определенное количество дней". Количество дней лежит в переменной. В проджект мейкере все норм работает. В Зенопостере на этом снипете выдает ошибку. Если поможете советом буду очень благодарен.

Снипет:
return DateTime.Now.AddDays(-{-Variable.CountDays-}+1).ToString(@"MM\/dd\/yy");
где {-Variable.CountDays-} - количество дней

Если не ошибаюсь, зенопостер ругается на скобочки "{", "}"
 

Antares

Client
Регистрация
19.01.2018
Сообщения
131
Благодарностей
9
Баллы
18
http://prntscr.com/j4x1fc - скрин из зп (это все один айди ошибки. Кубик с снипеттом, приведенным выше)
 

orka13

Client
Регистрация
07.05.2015
Сообщения
2 177
Благодарностей
2 184
Баллы
113
Вы используете устаревшый метод прописание переменных проекта в коде. Он поддерживается только частично сейчас.
Надо вот так:
Код:
project.Variables["CountDays"].Value
А не так как у вас.
UPD: а весь код наверное вот так должен выглядеть:
C#:
int number = Int32.Parse(project.Variables["CountDays"].Value);
return DateTime.Now.AddDays(-number).ToString(@"MM\/dd\/yy");
 
Последнее редактирование:
  • Спасибо
Реакции: Antares

Antares

Client
Регистрация
19.01.2018
Сообщения
131
Благодарностей
9
Баллы
18
Вы используете устаревшый метод прописание переменных проекта в коде. Он поддерживается только частично сейчас.
Надо вот так:
Код:
project.Variables["CountDays"].Value
А не так как у вас.
UPD: а весь код наверное вот так должен выглядеть:
C#:
int number = Int32.Parse(project.Variables["CountDays"].Value);
return DateTime.Now.AddDays(-number).ToString(@"MM\/dd\/yy");
Скажите, а если мне надо "минус {число дней} плюс 1". То вот так можно будет написать: "...(-number+1)..."?
 

orka13

Client
Регистрация
07.05.2015
Сообщения
2 177
Благодарностей
2 184
Баллы
113
Скажите, а если мне надо "минус {число дней} плюс 1". То вот так можно будет написать: "...(-number+1)..."?
на такие вопросы легче попробовать самому в коде, чем спрашивать. А так то да, можно.
 
  • Спасибо
Реакции: Antares

Antares

Client
Регистрация
19.01.2018
Сообщения
131
Благодарностей
9
Баллы
18
на такие вопросы легче попробовать самому в коде, чем спрашивать. А так то да, можно.
Спасибо за ответ. Сегодня уже не успею тестить, буду завтра этим заниматься. Поэтому сразу решил уточнять, пока знающие в топике отвечают )
 

Antares

Client
Регистрация
19.01.2018
Сообщения
131
Благодарностей
9
Баллы
18
Начал тестить. Совершенно запутался.

Задача такая:
Переменная CountDays = число дней (например 5)
Переменная Format = Формат даты (например, MM\/dd\/YYYY)
Необходимо получить дату текущую минус число дней в заданном формате.

Пробую делать по аналогии описанной выше:

int number = Int32.Parse(project.Variables["CountDays"].Value); // Это число дней
int format = Int32.Parse(project.Variables["Format"].Value); // Это формат в котором нужно получить дату
return DateTime.Now.AddDays(-number+1).ToString(format); // это формула (в ней получается от текущей даты отнять число дней и прибавить 1)

На сколько я понимаю тут проблема в типах данных (не очень в этом разбираюсь):
"Компиляция кода Ошибка в действии "CS1503" "Аргумент "1": преобразование типа из "int" в "string" невозможно". [Строка: 1; Cтолбец: 30]"

Изначально все это у меня выглядело так:
return DateTime.Now.AddDays(-{-Variable.CountDays-}+1).ToString(@"{-Variable.Format-}");
И отрабатывало в проджект мейкере, но в зенопостере стало давать ошибку.. что конечно весьма грустно.

И еще момент который смущает: в новом коде нет "@", я не очень понимаю зачем она, но вроде как нужна..
 

Antares

Client
Регистрация
19.01.2018
Сообщения
131
Благодарностей
9
Баллы
18
Пробую так:
int format1 = Int32.Parse(project.Variables["Format"].Value); // Format = MM\/dd/YYYY
return DateTime.Now.ToString(@"format1");

Не хочет. Выдает ошибку - "Подпроект 123. Выполнение действия CSharp OwnCode Входная строка имела неверный формат."
 

Moadip

Client
Регистрация
26.09.2015
Сообщения
509
Благодарностей
824
Баллы
93
"Компиляция кода Ошибка в действии "CS1503" "Аргумент "1": преобразование типа из "int" в "string" невозможно". [Строка: 1; Cтолбец: 30]"
Не хочет. Выдает ошибку - "Подпроект 123. Выполнение действия CSharp OwnCode Входная строка имела неверный формат."
Формат вывода времени это string, зачем его преобразовывать в int?

C#:
var number = int.Parse(project.Variables["CountDays"].Value);
var format = project.Variables["Format"].Value;
return DateTime.Now.AddDays(-number+1).ToString(format);
В переменной project.Variables["Format"].Value формат должен быть сразу с @, чтобы не извращаться - @"MM\/dd\/yy"

И еще момент который смущает: в новом коде нет "@", я не очень понимаю зачем она, но вроде как нужна..
https://docs.microsoft.com/ru-ru/previous-versions/visualstudio/visual-studio-2008/362314fe(v=vs.90)
 
  • Спасибо
Реакции: Antares

Antares

Client
Регистрация
19.01.2018
Сообщения
131
Благодарностей
9
Баллы
18
Формат вывода времени это string, зачем его преобразовывать в int?

C#:
var number = int.Parse(project.Variables["CountDays"].Value);
var format = project.Variables["Format"].Value;
return DateTime.Now.AddDays(-number+1).ToString(format);
В переменной project.Variables["Format"].Value формат должен быть сразу с @, чтобы не извращаться - @"MM\/dd\/yy"


https://docs.microsoft.com/ru-ru/previous-versions/visualstudio/visual-studio-2008/362314fe(v=vs.90)

Спасибо!
 

obyavkaby

Client
Регистрация
26.05.2017
Сообщения
187
Благодарностей
17
Баллы
18
Здравствуйте.
Подскажите что е так делаю, после выполнения получаю туже дату
1597314088405.png
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)