Random даты

Shiningmic

Client
Регистрация
19.09.2016
Сообщения
37
Благодарностей
7
Баллы
8
Нужно в шаблоне выбирать даты в случайном порядке. Когда даты одного месяца - проблем нет, а вот когда выпадает диапазон с 25 числа по 5, экшен Random числа уже не работает. Подскажите пожалуйста, может ещё как-то можно решить данную задачу?
 

kagorec

Client
Регистрация
24.08.2013
Сообщения
924
Благодарностей
478
Баллы
63
Сделал проще для работы дат.
Спарсил заранее календари от сегодняшней даты до 2035 года, получился текстовик где построчно даты.
Теперь этот текстовик используется для шаблона зенно где требуется работать с датами будущими.
В список берется все даты и очищается все прошедшие и оставляем например до 25 февраля, дальше в кубиках по условиям эта дата используется и т.д. и т.п.
 

Вложения

  • Спасибо
Реакции: Shiningmic

Shiningmic

Client
Регистрация
19.09.2016
Сообщения
37
Благодарностей
7
Баллы
8
Сделал проще для работы дат.
Спарсил заранее календари от сегодняшней даты до 2035 года, получился текстовик где построчно даты.
Теперь этот текстовик используется для шаблона зенно где требуется работать с датами будущими.
В список берется все даты и очищается все прошедшие и оставляем например до 25 февраля, дальше в кубиках по условиям эта дата используется и т.д. и т.п.
Спасибо за идею! Вариант с текстовиками не рассматривал!
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
19 488
Благодарностей
8 694
Баллы
113
Нужно в шаблоне выбирать даты в случайном порядке. Когда даты одного месяца - проблем нет, а вот когда выпадает диапазон с 25 числа по 5, экшен Random числа уже не работает. Подскажите пожалуйста, может ещё как-то можно решить данную задачу?
как вариант, можно генерить рандомное кол-во дней для приращения к заданному или текущему числу (дню) и снипетом прибавлять..
число 5 в скобках - это кол-во прибавляемых дней..
в первой строке задается число текущего месяца к которому нужно прибавить эти дни..
C#:
string date = "30";
string format = "dd";
return DateTime.ParseExact (date, format, System.Globalization.CultureInfo.InvariantCulture).AddDays(5).ToString(format, new System.Globalization.CultureInfo("EN"));
вот результат работы этого снипета:

upload_2018-1-30_3-29-14.png
 
  • Спасибо
Реакции: Shiningmic и kagorec

Shiningmic

Client
Регистрация
19.09.2016
Сообщения
37
Благодарностей
7
Баллы
8
как вариант, можно генерить рандомное кол-во дней для приращения к заданному или текущему числу (дню) и снипетом прибавлять..
число 5 в скобках - это кол-во прибавляемых дней..
в первой строке задается число текущего месяца к которому нужно прибавить эти дни..
C#:
string date = "30";
string format = "dd";
return DateTime.ParseExact (date, format, System.Globalization.CultureInfo.InvariantCulture).AddDays(5).ToString(format, new System.Globalization.CultureInfo("EN"));
вот результат работы этого снипета:

Посмотреть вложение 26692
Спасибо! Очень интересный снипет для моей задачи.
 
  • Спасибо
Реакции: kagorec и Sergodjan

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 102
Баллы
113
C#:
DateTime from = new DateTime(2018, 1, 25); // дата "ОТ" (формат "год, месяц, день")
DateTime to = new DateTime(2018, 2, 5); // дата "ДО" (формат "год, месяц, день")

if (from > to)
    throw new Exception("Дата \"ОТ\" должна быть меньше даты \"ДО\"!");

Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("ru-RU");
int diff = (to.AddDays(1) - from).Days;

return from.AddDays(new Random().Next(diff)).ToShortDateString(); // вернёт случайную дату из диапазона в формате "день.месяц.год"
//return from.AddDays(new Random().Next(diff)).Day; // вернёт только случайное число месяца из диапазона дат
 

Shiningmic

Client
Регистрация
19.09.2016
Сообщения
37
Благодарностей
7
Баллы
8
C#:
DateTime from = new DateTime(2018, 1, 25); // дата "ОТ" (формат "год, месяц, день")
DateTime to = new DateTime(2018, 2, 5); // дата "ДО" (формат "год, месяц, день")

if (from > to)
    throw new Exception("Дата \"ОТ\" должна быть меньше даты \"ДО\"!");

Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("ru-RU");
int diff = (to.AddDays(1) - from).Days;

return from.AddDays(new Random().Next(diff)).ToShortDateString(); // вернёт случайную дату из диапазона в формате "день.месяц.год"
//return from.AddDays(new Random().Next(diff)).Day; // вернёт только случайное число месяца из диапазона дат
Круто!
 

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