Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.61/141: Рейтинг темы: голосов - 141, средняя оценка - 4.61
0 / 0 / 0
Регистрация: 10.02.2016
Сообщений: 103
1

Сравнение дат

10.02.2016, 11:27. Показов 28861. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день! Нужна ваша помощь.
Задача в следующем: есть дата в формате 30 дек 2015, нужно узнать это раньше или позже, допустим, 20 окт 2015. Или сколько прошло дней с 30 дек 2015 до сегодняшнего дня. Знаю, что это нужно делать при помощи C#. Буду очень рад вашей помощи!
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.02.2016, 11:27
Ответы с готовыми решениями:

Сравнение дат
Добрый день. Подскажите, пожалуйста код Есть уловие: в первом поле таблицы могут находится...

Сравнение дат
Дата формируется из 3 чисел формата int. Т.е. день первой даты day1, день второй даты day2....

Сравнение дат
Помогите пожалуйста в решении одной проблемы. Мне нужно, чтобы на экране выводилось сообщение, если...

Сравнение дат
Здравствуйте! Сервер отдаёт дату вот в таком формате: 2015-04-24T07:00:51Z. Мне нужно узнать, не...

7
484 / 439 / 123
Регистрация: 05.01.2010
Сообщений: 1,848
10.02.2016, 11:53 2
Killer911, юзать DateTime.ParseExact либо Datetime.TryParseExact c нужным форматом и, видимо, русской культурой. ну а потом можно уже использовать операции сравнения и вычитания для определения "раньше/позже" и разницы дней соотвественно
1
38 / 38 / 52
Регистрация: 03.02.2016
Сообщений: 99
10.02.2016, 12:15 3
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
 static void Main(string[] args)
        {
 
            DateTime date = DateTime.Now;
            DateTime date2 = new DateTime(2015, 10, 20);
 
            Console.WriteLine("Системная дата " + date2.Day + "." + date2.Month + "." + date2.Year);
            Console.WriteLine("Сегодня " + date.Day + "." + date.Month + "." + date.Year);
 
            TimeSpan date3 = date.Subtract(date2);
            Console.WriteLine("Разница между датами " + date3.Days + " дней");
 
            Comparison(date, date2);
 
            Console.ReadLine();
        }
  static void Comparison(DateTime date, DateTime date2)
        {
            if ((date.Year == date2.Year) && (date.Month == date2.Month) && (date.Day == date2.Day))
            {
                Console.WriteLine("Даты равны");
            }
 
            else if ((date.Year == date2.Year) && (date.Month == date2.Month) && (date.Day != date2.Day))
            {
                if (date.Day > date2.Day)
                    Console.WriteLine(date.Day + "." + date.Month + "." + date.Year + " Дата позже");
                else
                    Console.WriteLine(date2.Day + "." + date2.Month + "." + date2.Year + " Дата раньше");
            }
            else if ((date.Year == date2.Year) && (date.Month != date2.Month))
            {
                if (date.Month > date2.Month)
                    Console.WriteLine(date.Day + "." + date.Month + "." + date.Year + " Дата позже");
                else
                    Console.WriteLine(date2.Day + "." + date2.Month + "." + date2.Year + " Дата раньше");
            }
            else if (date.Year != date2.Year)
            {
                if (date.Year > date2.Year)
                    Console.WriteLine(date.Day + "." + date.Month + "." + date.Year + " Дата позже");
                else
                    Console.WriteLine(date2.Day + "." + date2.Month + "." + date2.Year + " Дата раньше");
            }
        }
П.С. Если воспользоваться msdn.microsoft.com, все получится!
0
0 / 0 / 0
Регистрация: 10.02.2016
Сообщений: 103
10.02.2016, 12:39  [ТС] 4
Я должен был сказать сразу, я немного знаю джаваскрипт и пхп, а с C# сталкиваюсь впервые.
Код нужен для вставки в стороннюю программу, пожалуйста тыкните носом где в этом коде точки ввода данных.
Большое спасибо за помощь.
0
Покинул форум
3672 / 1483 / 355
Регистрация: 07.05.2015
Сообщений: 2,903
10.02.2016, 14:15 5
zSerhei, а теперь помедитируйте над этим:
C#
1
2
3
4
5
6
7
8
9
10
using System;
 
internal sealed class Program {
  static void Main() {
    DateTime d1 = new DateTime(2015, 12, 30);
    DateTime d2 = new DateTime(2015, 10, 20);
    
    Console.WriteLine(d1 < d2);
  }
}
0
38 / 38 / 52
Регистрация: 03.02.2016
Сообщений: 99
10.02.2016, 16:15 6
greg zakharov, Согласен, так проще и меньше действий. Тогда уж как-то так выводить. Булевский тру\фалсе ему не нужны.
C#
1
  if (d1 > d2)     Console.WriteLine(d1 + " больше " + d2);

Killer911, там данные изначально введены программно, вручную их там нигде не вводят.
C#
1
2
 DateTime date = DateTime.Now;
 DateTime date2 = new DateTime(2015, 10, 20);
В date и date2 занесли значения даты. В первом случае это сегодняшняя дата, во втором "20.10.2015" г.
0
0 / 0 / 0
Регистрация: 10.02.2016
Сообщений: 103
10.02.2016, 18:15  [ТС] 7
Спасибо, понял.
но у меня дата в формате "30 дек 2015", её наверное нужно форматировать? Или можно так?
Теоретически можно тру/фалсе
0
Покинул форум
3672 / 1483 / 355
Регистрация: 07.05.2015
Сообщений: 2,903
10.02.2016, 18:59 8
Лучший ответ Сообщение было отмечено mik-a-el как решение

Решение

Killer911, то есть Вы имели в виду, что дата представлена в виде строкового литерала? Ну, раз так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
using System;
using System.Linq;
using System.Globalization;
 
namespace DateCompare {
  internal static class Extends {
    internal static Int32 ToInt32(this String s) {
      Int32 i;
      
      if (!Int32.TryParse(s, out i)) {
        throw new InvalidOperationException(
          "Could not represent string as number."
        );
      }
      
      return i;
    }
  }
 
  internal sealed class Program {
    static void Main() {
      String s = "30 дек 2015";
      String[] date = s.Split(' ');
      DateTime dt, now = DateTime.Now;
      
      Int32 mon = DateTimeFormatInfo
          .CurrentInfo
          .MonthGenitiveNames
          .Select((m, i) => new {Month = m, Index = i})
          .Where(m => !String.IsNullOrEmpty(m.Month)
            && m.Month.Substring(0, 3) == date[1])
          .Select(i => i.Index + 1).ToArray()[0];
      dt = new DateTime(date[2].ToInt32(), mon, date[0].ToInt32());
      Console.WriteLine("Дата {0} больше текущей даты? {1}", s, dt > now);
    }
  }
}
0
10.02.2016, 18:59
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.02.2016, 18:59
Помогаю со студенческими работами здесь

Сравнение дат
У меня есть дата, формата DateTime. Например, 31.10.2016 11:11. Мне нужно написать фильтр такой,...

Сравнение дат
Здравствуйте. Мне нужно получить разницу между датами, получаю я ее таким методом: public...

Сравнение двух дат
Есть две даты надо их сравнить и вывести более позднюю дату из двух,то есть например 20.03.16 16-45...

dateTimePicker + сравнение дат
Программа с задиаками добавил dateTimePicker встал вопрос как сравнить выбранную дату месяц и день...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru