Random даты

  • Автор темы Автор темы Shiningmic
  • Дата начала Дата начала

Shiningmic

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

Вложения

  • Спасибо
Реакции: Shiningmic
Сделал проще для работы дат.
Спарсил заранее календари от сегодняшней даты до 2035 года, получился текстовик где построчно даты.
Теперь этот текстовик используется для шаблона зенно где требуется работать с датами будущими.
В список берется все даты и очищается все прошедшие и оставляем например до 25 февраля, дальше в кубиках по условиям эта дата используется и т.д. и т.п.
Спасибо за идею! Вариант с текстовиками не рассматривал!
 
Нужно в шаблоне выбирать даты в случайном порядке. Когда даты одного месяца - проблем нет, а вот когда выпадает диапазон с 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
как вариант, можно генерить рандомное кол-во дней для приращения к заданному или текущему числу (дню) и снипетом прибавлять..
число 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
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; // вернёт только случайное число месяца из диапазона дат
 
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; // вернёт только случайное число месяца из диапазона дат
Круто!
 

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