Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
Shadevskiy
5 / 5 / 11
Регистрация: 25.01.2015
Сообщений: 205
#1

Какой класс использовать для представления времени

26.11.2015, 16:35. Просмотров 1088. Ответов 22
Метки нет (Все метки)

Мне нужно расписание сделать. Можно ,конечно, через дабл 13.30 , но как-то не по госту, наверное. Стринг ругается , если я вписываю 13:30, что использовать,ребят?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.11.2015, 16:35
Ответы с готовыми решениями:

Класс для представления времени, предусмотреть возможности установки времени и изменения его отдельных полей
Составить описание класса для представления времени. Предусмотреть возможности...

Класс для представления даты и времени
Здравствуйте, знаю что уже было много тем создано с подобным вопросом. Но...

Какой класс использовать для парса json?
Здравствуйте, нужно как то спарсить json, на соседнем форуме посоветовали...

Какой способ измерения времени лучше использовать для получения данных с comport?
Нужно получать время между измерениями с comport что лучше, использовать?...

Составить описание класса для представления времени
Как записать в C#,просто только начал изучать этот язык,а разобраться никак не...

22
OwenGlendower
Супер-модератор
Эксперт .NET
9055 / 8004 / 3422
Регистрация: 17.03.2014
Сообщений: 15,831
Записей в блоге: 1
26.11.2015, 16:40 #2
Лучший ответ Сообщение было отмечено Shadevskiy как решение

Решение

Shadevskiy, используй TimeSpan.
1
Shadevskiy
5 / 5 / 11
Регистрация: 25.01.2015
Сообщений: 205
26.11.2015, 16:44  [ТС] #3
А как она работает? Т.е у меня есть некое число инт/дабл, а он его во время переводит. А каким образом? Допустим, мне нужно, чтобы было 11:47
0
Даценд
Модератор
Эксперт .NET
4099 / 3918 / 2593
Регистрация: 20.04.2015
Сообщений: 7,108
26.11.2015, 18:15 #4
Лучший ответ Сообщение было отмечено Shadevskiy как решение

Решение

Shadevskiy,
Можно и DateTime воспользоваться:
C#
1
2
3
4
5
6
int hours = 11;
int minutes = 47;
DateTime dt = new DateTime();
dt = dt.AddHours(hours);
dt = dt.AddMinutes(minutes);
Console.WriteLine(dt.ToShortTimeString());
1
OwenGlendower
Супер-модератор
Эксперт .NET
9055 / 8004 / 3422
Регистрация: 17.03.2014
Сообщений: 15,831
Записей в блоге: 1
26.11.2015, 18:22 #5
Цитата Сообщение от Даценд Посмотреть сообщение
Можно и DateTime воспользоваться:
Если нужно хранить только время, то лучше так не делать чтобы не создавать путаницу.
1
Shadevskiy
5 / 5 / 11
Регистрация: 25.01.2015
Сообщений: 205
26.11.2015, 18:50  [ТС] #6
Я пробовал через Датетайм, но не знаю,как в массив занести, а мне потом время сравнить нужно
Время вписываю через таблицу
C#
1
2
3
4
5
6
7
8
9
10
11
12
ouble[,] GR = new double[graphSize, graphSize];
            {
                for (int i = 0; i < graphSize; i++)
                {
                    for (int j = 0; j < graphSize; j++)
                    {
                        try
                        {
                            var bremya = DateTime.Parse(dataGridView1[j, i].Value.ToString());
                            
 
                            GR[i, j] = bremya;
0
OwenGlendower
Супер-модератор
Эксперт .NET
9055 / 8004 / 3422
Регистрация: 17.03.2014
Сообщений: 15,831
Записей в блоге: 1
26.11.2015, 18:53 #7
Shadevskiy, тебя не смущает что массив имеет тип double, а записать в него ты пытаешься DateTime?
1
Shadevskiy
5 / 5 / 11
Регистрация: 25.01.2015
Сообщений: 205
26.11.2015, 18:56  [ТС] #8
Не то слово. Меня это очень долго смущает...Но мне надо их как-то сравнить
0
OwenGlendower
Супер-модератор
Эксперт .NET
9055 / 8004 / 3422
Регистрация: 17.03.2014
Сообщений: 15,831
Записей в блоге: 1
26.11.2015, 18:58 #9
Лучший ответ Сообщение было отмечено Shadevskiy как решение

Решение

Shadevskiy, бери и сравнивай:
C#
1
2
3
4
5
6
DateTime d1 = new DateTime(1990, 1, 1);
DateTime d2 = new DateTime(1990, 2, 1);
if (d2 > d1)
{
    // ...
}
Аналогично можно работать и с TimeSpan.
1
Shadevskiy
5 / 5 / 11
Регистрация: 25.01.2015
Сообщений: 205
26.11.2015, 19:01  [ТС] #10
А как занести в массив? Я же не могу для каждой даты создавать свою переменную
0
OwenGlendower
Супер-модератор
Эксперт .NET
9055 / 8004 / 3422
Регистрация: 17.03.2014
Сообщений: 15,831
Записей в блоге: 1
26.11.2015, 19:02 #11
Shadevskiy, ты издеваешься? Массивы для любого типа объявляются одинаково.
C#
1
2
3
DateTime[] dates = new DateTime[2];
dates[0] = new DateTime(1990, 1, 1);
dates[1] = new DateTime(1990, 2, 1);
1
Shadevskiy
5 / 5 / 11
Регистрация: 25.01.2015
Сообщений: 205
26.11.2015, 19:04  [ТС] #12
Вы меня не любите, да?
0
OwenGlendower
26.11.2015, 19:06
  #13

Не по теме:

Shadevskiy, нет. Просто ты задаешь глупые вопросы. Если обидел, извини.

0
Даценд
Модератор
Эксперт .NET
4099 / 3918 / 2593
Регистрация: 20.04.2015
Сообщений: 7,108
26.11.2015, 19:13 #14
Лучший ответ Сообщение было отмечено Shadevskiy как решение

Решение

Цитата Сообщение от OwenGlendower Посмотреть сообщение
Если нужно хранить только время, то лучше так не делать чтобы не создавать путаницу.
А что здесь может запутать. Если создаем DateTime с пустым конструктором, а затем добавляем часы и минуты, то получим '01.01.1900 часы:минуты'. Все значения с одной датой и разным временем.
Для самоуспокоения можно другой конструктор использовать:
C#
1
2
3
4
5
int hours = 11;
int minutes = 47;
DateTime dt = new DateTime(1900, 01, 01, hours, minutes, 0);
DateTime[,] dtArray = new DateTime[5, 5];
dtArray[0, 0] = dt;
1
Woldemar89
TheGreatCornholio
1164 / 652 / 271
Регистрация: 30.07.2015
Сообщений: 2,259
Завершенные тесты: 1
26.11.2015, 19:22 #15
Цитата Сообщение от Shadevskiy Посмотреть сообщение
Вы меня не любите, да?
Не обязаны, это уж точно. Уважать, да - исходя, из правил форума.

Но и к тебе это тоже относится, - поэтому советую, из уважения к форумчанам -
для начала, изучить базу, дабы совсем дилетантских вопросов не задавать.

Литература по C# для начинающих и не только
FAQ для студентов или школьников
0
Shadevskiy
5 / 5 / 11
Регистрация: 25.01.2015
Сообщений: 205
26.11.2015, 19:25  [ТС] #16
Ага, а какое значение будет в GR, если оставить ячейку пустой? Чтобы потом поставить условие заполнения ячеек. Т.е будь это инт/дабл , это был бы 0 , а тут?
C#
1
2
3
4
5
6
7
8
9
10
11
12
TimeSpan[,] GR = new TimeSpan[graphSize, graphSize];
            {
                for (int i = 0; i < graphSize; i++)
                {
                    for (int j = 0; j < graphSize; j++)
                    {
                        try
                        {
                            var bremya = TimeSpan.Parse(dataGridView1[j, i].Value.ToString());
                            
 
                            GR[i, j] = bremya;
Добавлено через 1 минуту
Думаю, нет смысла раздувать эту тему. Сложно не задавать "глупые вопросы", когда лезишь во что-то новое.
0
OwenGlendower
Супер-модератор
Эксперт .NET
9055 / 8004 / 3422
Регистрация: 17.03.2014
Сообщений: 15,831
Записей в блоге: 1
26.11.2015, 19:29 #17
Даценд, путаница в том что нам нужно только время, а работаем почему-то с DateTime. При том что существует специальный тип только для времени - TimeSpan. Если быть до конца последовательным, то и TimeSpan здесь не подходит т.к. он представляет из себя интервал времени. Если это важно, то можно написать свою структуру или использовать LocalTime из библиотеки NodaTime.

Добавлено через 1 минуту
Shadevskiy, используй TimeSpan.Zero или TimeSpan? (Nullable<TimeSpan>) и null.
0
Shadevskiy
5 / 5 / 11
Регистрация: 25.01.2015
Сообщений: 205
26.11.2015, 19:34  [ТС] #18
Ладно, не заморачивайтесь. Он даже ,если вводить в таблицу 14:15 , не считывает. Так что проще в обход пойти. Сделаю 14ч15м
0
Даценд
Модератор
Эксперт .NET
4099 / 3918 / 2593
Регистрация: 20.04.2015
Сообщений: 7,108
26.11.2015, 19:34 #19
Цитата Сообщение от OwenGlendower Посмотреть сообщение
Даценд, путаница в том что нам нужно только время, а работаем почему-то с DateTime.
Почему-то, когда нам нужна только дата, а работаем с DateTime, никаких сомнений нет.
А вообще, я согласен с:
Цитата Сообщение от OwenGlendower Посмотреть сообщение
Если это важно, то можно написать свою структуру
0
Woldemar89
TheGreatCornholio
1164 / 652 / 271
Регистрация: 30.07.2015
Сообщений: 2,259
Завершенные тесты: 1
26.11.2015, 19:35 #20
Найти промежуток между двумя временными точками
Тут отвечал, может, подойдет класс DayTime самописный.
0
26.11.2015, 19:35
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.11.2015, 19:35

Составить описание класса для представления времени
Составить описание класса для представления времени. Предусмотреть возможности...

Составить описание класса для представления времени
Составить описание класса для представления времени. Предусмотреть возможности...

Составить описание класса для представления времени
Составить описание класса для представления времени в 24-часовом формате....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru