Работа с датой и временем в Zennoposter с использованием методов C#

zennomag

Client
Регистрация
03.09.2022
Сообщения
7
Благодарностей
0
Баллы
1
Всем привет. Спасибо огромное за эту тему. Я хоть и новичок, но уже много чего для себя взял))
Подскажите, пожалуйста, есть задача, которую своими усилиями не решить:
Есть exel файл, либо могу список сделать, без разницы, следующего вида:

19.09.20227,5
25.07.20228
14.06.20229,5
27.05.202211
04.05.202214
11.04.202217
28.02.202220
14.02.20229,5
20.12.20218,5
25.10.20217,5
13.09.20216,75
26.07.20216,5
15.06.20215,5
26.04.20215
22.03.20214,5
27.07.20204,25
22.06.20204,5
27.04.20205,5
10.02.20206
16.12.20196,25
28.10.20196,5
09.09.20197
29.07.20197,25
17.06.20197,5
17.12.20187,75
17.09.20187,5
26.03.20187,25
12.02.20187,5
18.12.20177,75
30.10.20178,25
18.09.20178,5
19.06.20179
02.05.20179,25
27.03.20179,75
19.09.201610
14.06.201610,5
03.08.201511
16.06.201511,5
05.05.201512,5
16.03.201514
02.02.201515
16.12.201417
12.12.201410,5
05.11.20149,5
28.07.20148
28.04.20147,5
03.03.20147
13.09.20135,5

У меня в переменной лежит дата. Эту дату я должен сравнить с датами в таблице и взять значение. Есть нюанс.
В период с 13.09.2013 по 03.03.2014 - значение 5,5
В период с 03.03.2014 по 28.04.2014 - значение 7
В период с 28.04.2014 по 28.07.2014 - значение 7,5
итд

Как сравнить мою дату из переменной, с датами в списке и взять нужное значение? Помогите, пожалуйста.)
 

viol2021

Client
Регистрация
12.01.2021
Сообщения
469
Благодарностей
169
Баллы
43
Всем привет. Спасибо огромное за эту тему. Я хоть и новичок, но уже много чего для себя взял))
Подскажите, пожалуйста, есть задача, которую своими усилиями не решить:
Есть exel файл, либо могу список сделать, без разницы, следующего вида:

19.09.20227,5
25.07.20228
14.06.20229,5
27.05.202211
04.05.202214
11.04.202217
28.02.202220
14.02.20229,5
20.12.20218,5
25.10.20217,5
13.09.20216,75
26.07.20216,5
15.06.20215,5
26.04.20215
22.03.20214,5
27.07.20204,25
22.06.20204,5
27.04.20205,5
10.02.20206
16.12.20196,25
28.10.20196,5
09.09.20197
29.07.20197,25
17.06.20197,5
17.12.20187,75
17.09.20187,5
26.03.20187,25
12.02.20187,5
18.12.20177,75
30.10.20178,25
18.09.20178,5
19.06.20179
02.05.20179,25
27.03.20179,75
19.09.201610
14.06.201610,5
03.08.201511
16.06.201511,5
05.05.201512,5
16.03.201514
02.02.201515
16.12.201417
12.12.201410,5
05.11.20149,5
28.07.20148
28.04.20147,5
03.03.20147
13.09.20135,5

У меня в переменной лежит дата. Эту дату я должен сравнить с датами в таблице и взять значение. Есть нюанс.
В период с 13.09.2013 по 03.03.2014 - значение 5,5
В период с 03.03.2014 по 28.04.2014 - значение 7
В период с 28.04.2014 по 28.07.2014 - значение 7,5
итд

Как сравнить мою дату из переменной, с датами в списке и взять нужное значение? Помогите, пожалуйста.)
А даты повторяются в списке?
 

viol2021

Client
Регистрация
12.01.2021
Сообщения
469
Благодарностей
169
Баллы
43
Нет, даты не повторяются. Да и список этот константа по большому счету. Это даты, с которых ЦБ установил ставку.
Тогда можно завести dictionary где ключем будут даты и дергать от туда.
Примерно так

C#:
Dictionary<string, double> dic = new Dictionary<string, double>();
dic.Add("19.09.2022",7.5);

string test = "19.09.2022";

if(dic[test] == 7.5)
    return 7.5;
 

zennomag

Client
Регистрация
03.09.2022
Сообщения
7
Благодарностей
0
Баллы
1
Тогда можно завести dictionary где ключем будут даты и дергать от туда.
Примерно так

C#:
Dictionary<string, double> dic = new Dictionary<string, double>();
dic.Add("19.09.2022",7.5);

string test = "19.09.2022";

if(dic[test] == 7.5)
    return 7.5;
Да, все так, но есть одно но))
19.09.2022 по сегодняшний день 7.5
идем вниз
с 19.09.2022 по 25.07.2022 - 8
с 25.07.2022 по 14.06.2022 - 9,5
итд...
Т.е моя дата, (например 21.08.2022) которую я сравниваю, должна попасть в период между этими датами и взять нужное значение.
21.08.2022 - попали в период с 25.07.2022 по 19.09.2022 - значение 8.
 

viol2021

Client
Регистрация
12.01.2021
Сообщения
469
Благодарностей
169
Баллы
43
C#:
var list = project.Lists["list"];
Dictionary<long, double> dic = new Dictionary<long, double>();

DateTime dt = DateTime.Parse("21.08.2022");
long tc = dt.Ticks;
long c = 0;

foreach(var l in list)
{
    DateTime t = DateTime.Parse(l.Split(':')[0]);
    dic.Add(t.Ticks, Double.Parse(l.Split(':')[1]));
}

Dictionary<long,double> newDic = dic.OrderBy(r=> r.Key).ToDictionary(r=> r.Key, r=> r.Value);
foreach(var k in newDic.Keys)
{
    if(k > tc)break;
    else c = k;
}

return dic[c];
Может кому то нужно будет
 

Вложения

  • 757 байт Просмотры: 11
  • Спасибо
Реакции: zennomag

1983anton

Client
Регистрация
19.12.2022
Сообщения
26
Благодарностей
3
Баллы
3
Здравствуйте! Подскажите новичку кто нибудь не могу додуматься как проставить дату рождения в таком формате (__. __.____.) Как я понял это — диапазон от 01 до 31 (dd.MM.yyyy - 01.01.2020)
 

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