C# генерация случайного числа

vind

Client
Регистрация
03.09.2019
Сообщения
73
Благодарностей
6
Баллы
8
Добрый день. Подскажите, пожалуйста, как в C# совместить две операции: сгенерировать случайное число дней от 1 до 10. И затем на это число увеличить кол-во дней в дате? Пример: сегодня 26.20.21. Я сгенерил цифру 2. Прибавил к дате и получилась дата 28.10.21. Нашел два кода:

Код 1 (генерит рандомное значение от 1 до 10):
C#:
//Создание объекта для генерации чисел
Random rnd = new Random();
 
//Получить случайное число (в диапазоне от 0 до 10)
int value = rnd.Next(0, 10);
 
//Вывод числа в консоль
Console.WriteLine(value);
Код 2 (прибавляет к текущей дате это число):
C#:
//указываем произвольную дату
DateTime dt1 = new DateTime.Now;
//прибавим 2 дня к дате dt1
DateTime dt2 = dt1.AddDays(2);
return dt2;
Как это можно совместить в "одно"?)
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 690
Баллы
113
C#:
//Создание объекта для генерации чисел
Random rnd = new Random();
 
//Получить случайное число (в диапазоне от 0 до 9)
int value = rnd.Next(0, 10);

//указываем произвольную дату
DateTime dt1 = new DateTime.Now;
//прибавим value дня к дате dt1
DateTime dt2 = dt1.AddDays(value);
return dt2;
 
  • Спасибо
Реакции: vind

vind

Client
Регистрация
03.09.2019
Сообщения
73
Благодарностей
6
Баллы
8
C#:
//Создание объекта для генерации чисел
Random rnd = new Random();

//Получить случайное число (в диапазоне от 0 до 9)
int value = rnd.Next(0, 10);

//указываем произвольную дату
DateTime dt1 = new DateTime.Now;
//прибавим value дня к дате dt1
DateTime dt2 = dt1.AddDays(value);
return dt2;
Спасибо, но почему-то выдает ошибку: "Ошибка в действии "CS1526" "A new expression requires (), [], or {} after type". [Строка: 8; Cтолбец: 32]"

Я тогда добавил () к DateTime dt1 = new DateTime.Now(); - но получилась другая ошибка:

Ошибка в действии "CS0426" "The type name 'Now' does not exist in the type 'DateTime'". [Строка: 8; Cтолбец: 29]
и
Ошибка в действии "CS1503" "Argument 1: cannot convert from 'string' to 'double'". [Строка: 4; Cтолбец: 29]
 

Carty

Client
Регистрация
16.06.2021
Сообщения
39
Благодарностей
66
Баллы
18
C#:
DateTime dt1 = DateTime.Now;
 
  • Спасибо
Реакции: vind

vind

Client
Регистрация
03.09.2019
Сообщения
73
Благодарностей
6
Баллы
8

vind

Client
Регистрация
03.09.2019
Сообщения
73
Благодарностей
6
Баллы
8
Еще есть вопрос: в данном коде мы получаем дату в формате: 27.10.2021 23:55:29. А как можно "перевернуть" ее в вид: 2021-10-27T23:55:29?

C#:
//Создание объекта для генерации чисел
Random rnd = new Random();

//Получить случайное число (в диапазоне от 0 до 9)
int value = rnd.Next(1, 90);

//указываем произвольную дату
DateTime dt1 = DateTime.Now;
//прибавим value дня к дате dt1
DateTime dt2 = dt1.AddDays(value);
return dt2;
Читаю такую полезную статью, вроде все есть, но никак не пойму как формат поменять: https://zennolab.com/discussion/threads/rabota-s-datoj-i-vremenem-v-zennoposter-s-ispolzovaniem-metodov-c.79048/
 
Последнее редактирование:

Roman*

Client
Регистрация
25.09.2013
Сообщения
1 651
Благодарностей
655
Баллы
113
Взять дату в unix в секундах и потом конвертировать

//из 1474479540 в 21.09.2016 17:39:00:
//из 1474479540 в 21.09.2016 17:39:00
string unixTimeStamp = project.Variables["bd_now_unixtime"].Value;
var unixTimeStampd = double.Parse(unixTimeStamp);
System.DateTime dtDateTime = new DateTime(1970,1,1,0,0,0,0,System.DateTimeKind.Utc);
dtDateTime = dtDateTime.AddSeconds(unixTimeStampd).ToLocalTime();
return dtDateTime.ToString("dd.MM.yyyy hh:mm:ss")
 
  • Спасибо
Реакции: vind

vind

Client
Регистрация
03.09.2019
Сообщения
73
Благодарностей
6
Баллы
8
Взять дату в unix в секундах и потом конвертировать

//из 1474479540 в 21.09.2016 17:39:00:
//из 1474479540 в 21.09.2016 17:39:00
string unixTimeStamp = project.Variables["bd_now_unixtime"].Value;
var unixTimeStampd = double.Parse(unixTimeStamp);
System.DateTime dtDateTime = new DateTime(1970,1,1,0,0,0,0,System.DateTimeKind.Utc);
dtDateTime = dtDateTime.AddSeconds(unixTimeStampd).ToLocalTime();
return dtDateTime.ToString("dd.MM.yyyy hh:mm:ss")
Спасибо за способ. Но выдает ошибку "Ошибка в действии "CS1002" "; expected". [Строка: 6; Cтолбец: 50]". Экспериментирую с разными другими форматами вывода, а так же галочка "Возвращать значение", чтобы класть или не класть в переменную, пока не хочет работать
 

Alexmd

Client
Регистрация
10.12.2018
Сообщения
1 021
Благодарностей
1 385
Баллы
113
C#:
return string.Format("{0:s}",DateTime.Now.AddDays(Enumerable.Range(1,10).Shuffle().First()));
 
  • Спасибо
Реакции: vind

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