Вопрос по коду (работа с датами)

Antares

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

Очередной вопрос по коду от меня. Сейчас перешел с проджект мейкера на отладку шаблона в зенопостер. И столкнулся с тем, что в проджект мейкере все снипеты работают, а в ЗП зачастую выдают ошибки. Пробую разные варианты исправить код, но я не программист и языка не знаю.. пробую чисто по логике что то менять. Но на текущий момент столкнулся с проблемкой, которую исправить не получается.

Была задача:
Взять 2 даты, которые записаны в двух переменных и получить разницу в днях. Осложнено все тем, что даты в разных форматах. Причем формат второй даты динамический (может быть разным), поэтому есть еще одна переменная, в которой указан текущий формат для этой даты (dd/MM например и т.д.).

Задача была успешно решена снипетом, который любезно мне подсказали на форуме. И он отлично отрабатывал в ПМ, пока я не стал запускать шаблон в ЗП.

----

Итак имеем переменные:
Data1 - Это первая дата. Она всегда в таком формате: "09.03.18"
Data2 - Это вторая дата. И она может быть в разных форматах. (Например 03/15/18, или такая 15/03, или такая 15/03/2018 и т.д.)
FormatData2 - Переменная, в которой указан текущий формат для Data2 ( MM/dd/yy или dd/MM и т.д.)

Вот этот сниппет (который работал в ПМ):
string Data1 = project.Variables["Data1"].Value;
string Data2 = project.Variables["Data2"].Value;
DateTime Data1norm = DateTime.ParseExact(Data1, "dd.MM.yy", null);
DateTime Data2norm = DateTime.ParseExact(Data2, "{-Variable.FormatData2-}", null);
return (Data2norm - Data1norm).TotalDays; // Получение разницы в днях

Ошибка, которую выдает ЗП:
"Подпроект 123. Выполнение действия CSharp OwnCode Строка не распознана как действительное значение DateTime."


Пробовал поменять код как то вот так:
var format = project.Variables["FormatData2"].Value;
string Data1 = project.Variables["Data1"].Value;
string Data2 = project.Variables["Data2"].Value;
DateTime Data1norm = DateTime.ParseExact(Data1, "dd.MM.yy", null);
DateTime Data2norm = DateTime.ParseExact(Data2, "format", null);
return (Data2norm - Data1norm).TotalDays; // Получение разницы в днях

Не помогло, та же ошибка. Но теперь и проджект мейкер код не обрабатывает, и выдает такую же ошибку.

Думал, может быть это связано с тем, что в дате2 иногда идет формат день/месяц, без года. Пробовал менять на формат с годом. Все равно ошибка.

Буду очень благодарен за помощь.
 

Antares

Client
Регистрация
19.01.2018
Сообщения
131
Благодарностей
9
Баллы
18
Пробовал формат писать так: "MM\/dd\/yy" - не помогает..
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113
вместо это "{-Variable.FormatData2-}" правой кнопкой мыши и там в меню выбери нужную переменную. Вставится переменная правильном для C# формате
 
  • Спасибо
Реакции: Antares

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
только без кавычек
 

Antares

Client
Регистрация
19.01.2018
Сообщения
131
Благодарностей
9
Баллы
18
вместо это "{-Variable.FormatData2-}" правой кнопкой мыши и там в меню выбери нужную переменную. Вставится переменная правильном для C# формате
Спасибо за ответ. Убегаю сейчас к сожалению, не успеваю протестить.


только без кавычек
Что, где, в каком варианте без ковычек? )
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
Спасибо за ответ. Убегаю сейчас к сожалению, не успеваю протестить.



Что, где, в каком варианте без ковычек? )
тут, про эту строку идёт разговор

DateTime Data2norm = DateTime.ParseExact(Data2, "{-Variable.FormatData2-}", null);
 

Antares

Client
Регистрация
19.01.2018
Сообщения
131
Благодарностей
9
Баллы
18
тут, про эту строку идёт разговор

DateTime Data2norm = DateTime.ParseExact(Data2, "{-Variable.FormatData2-}", null);
Т.е. мне сюда вставить через правую клавишу переменную, а ковычки вообще убрать? Правильно понял?
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
  • Спасибо
Реакции: Antares

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
C# макросы не поддерживает
 
  • Спасибо
Реакции: Antares

Antares

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

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
  • Спасибо
Реакции: Antares

Antares

Client
Регистрация
19.01.2018
Сообщения
131
Благодарностей
9
Баллы
18
вместо это "{-Variable.FormatData2-}" правой кнопкой мыши и там в меню выбери нужную переменную. Вставится переменная правильном для C# формате
ну по идеи у тебя ошибку должно показать сразу на кубике этом
Спасибо, народ, все работает! )
 

GREXA

Client
Регистрация
16.09.2017
Сообщения
276
Благодарностей
103
Баллы
43
не понял что нужно прописать вот сюда?
project.Variables["FormatData2"].Value;
 

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