Как вы целые(месяц и день) превращаете в дату? нужно ли?
От: nt2000  
Дата: 14.10.19 09:34
Оценка:
есть пары чисел (месяцы и дни, года нет) нужно узнать расстояние между ними в месяцах?

по какому пути идти разумнее? тупо считать или работать датами?

сейчас d1.CompareTo(d2) всегда даёт -1 (ili 1) (надо культуру где-то добавить?)
даты получаю так:
DateTime d1 = DateTime.Today
d2 = new DateTime(DateTime.Today.Year-2,int.Parse(d[2]),int.Parse(d[3]));)


помню как-то в строках получилось что тупой путь был бы короче..
Re: Как вы целые(месяц и день) превращаете в дату? нужно ли?
От: Shmj Ниоткуда  
Дата: 14.10.19 10:18
Оценка:
Здравствуйте, nt2000, Вы писали:

N>есть пары чисел (месяцы и дни, года нет) нужно узнать расстояние между ними в месяцах?


Что значит "в месяцах"? 1 фев. и 28 фев. — это 1 месяц или нет? Есть же високосный год а есть не високосный...
Отредактировано 14.10.2019 10:19 Shmj . Предыдущая версия .
Re[2]: всё.. там не календарь, а арифметика оказывается
От: nt2000  
Дата: 14.10.19 14:03
Оценка: :)
Здравствуйте, Shmj, Вы писали:

S>Что значит "в месяцах"? 1 фев. и 28 фев. — это 1 месяц или нет? Есть же високосный год а есть не високосный...


вопрос ставили так: разница между числами более одного месяца или менее?

я тут перечитал условия — числа если равны (или больше) то больше мес-а, независимо сколько дней в мес-е.

..10/24 is a month apart from 11/25, but it is not a month apart from 11/23 because..

Re[3]: всё.. там не календарь, а арифметика оказывается
От: Sinclair Россия https://github.com/evilguest/
Дата: 14.10.19 16:44
Оценка:
Здравствуйте, nt2000, Вы писали:

N>Здравствуйте, Shmj, Вы писали:


S>>Что значит "в месяцах"? 1 фев. и 28 фев. — это 1 месяц или нет? Есть же високосный год а есть не високосный...


N>вопрос ставили так: разница между числами более одного месяца или менее?


N>я тут перечитал условия — числа если равны (или больше) то больше мес-а, независимо сколько дней в мес-е.

..10/24 is a month apart from 11/25, but it is not a month apart from 11/23 because..



public bool IsDiffGreaterThanOneMonth(m1, d1, m2, d2) => (100*(m1-m2)+d1-d2) > 100
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[3]: всё.. там не календарь, а арифметика оказывается
От: namespace  
Дата: 15.10.19 08:27
Оценка: :)
N>вопрос ставили так: разница между числами более одного месяца или менее?
N>я тут перечитал условия — числа если равны (или больше) то больше мес-а, независимо сколько дней в мес-е.
Какая арифметика?! Там же все просто.
Не нужно усложнять код без надобности, после вас его еще читать другим.
DateTime dt1 = DateTime.Now;
DateTime dt2 = dt1.AddMonths(1);
DateTime dt3 = dt1.AddMonths(1).AddDays(1);
DateTime dt4 = dt1.AddMonths(1).AddDays(-1);

Console.WriteLine("Более одного месяца");
Console.WriteLine(dt1.AddMonths(1) <= dt2);
Console.WriteLine(dt1.AddMonths(1) <= dt3);
Console.WriteLine(dt1.AddMonths(1) <= dt4);
Re: Как вы целые(месяц и день) превращаете в дату? нужно ли?
От: Pzz Россия https://github.com/alexpevzner
Дата: 15.10.19 08:41
Оценка:
Здравствуйте, nt2000, Вы писали:

N>есть пары чисел (месяцы и дни, года нет) нужно узнать расстояние между ними в месяцах?


А что такое "расстояние между ними в месяцах"? Между 30-м января и первым какое расстяние в месяцах? А между первым и 15-м?
Re[2]: 1-30 ili 1-15 то менее менее месяца..
От: nt2000  
Дата: 15.10.19 09:47
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>А что такое "расстояние между ними в месяцах"? Между 30-м января и первым какое расстяние в месяцах? А между первым и 15-м?


это учебная задача — большая точность и не нужна.. есть ли полный месяц или нет.. там был ещё более запутанный момент — числа в декабре и в январе.. не помню как метод сработал, но прокатило.. я специально эту ситуацию не обраба/отывал
Re[4]: всё.. там не календарь, а арифметика оказывается
От: nt2000  
Дата: 15.10.19 10:00
Оценка:
Здравствуйте, Sinclair, Вы писали:S>
S>public bool IsDiffGreaterThanOneMonth(m1, d1, m2, d2) => (100*(m1-m2)+d1-d2) > 100

Для себя записал, а для них селекты и всякие => ne poдходят.. нужен поростой вариант.. выходит за границы усинг систэм нельзя
Console.WriteLine($"{м1}/{д1} {м2/д2} {(m1 > m2 && d1>=d2||m1 < m2 && d1<=d2 ?"differ..":"are within..")}");
Re[3]: 1-30 ili 1-15 то менее менее месяца..
От: Pzz Россия https://github.com/alexpevzner
Дата: 15.10.19 12:06
Оценка: +2
Здравствуйте, nt2000, Вы писали:

Pzz>>А что такое "расстояние между ними в месяцах"? Между 30-м января и первым какое расстяние в месяцах? А между первым и 15-м?


N>это учебная задача — большая точность и не нужна.. есть ли полный месяц или нет.. там был ещё более запутанный момент — числа в декабре и в январе.. не помню как метод сработал, но прокатило.. я специально эту ситуацию не обраба/отывал


Точность, может, и не нужна, но определение должно быть ясное. Уж особенно если задача учебная.
Re[4]: всё.. там не календарь, а арифметика оказывается
От: nt2000  
Дата: 15.10.19 13:40
Оценка:
Здравствуйте, namespace, Вы писали:

N>Какая арифметика?! Там же все просто.

N>Не нужно усложнять код без надобности, после вас его еще читать другим.
N>DateTime dt1 = DateTime.Now;
N>DateTime dt2 = dt1.AddMonths(1);
N>DateTime dt3 = dt1.AddMonths(1).AddDays(1);
N>DateTime dt4 = dt1.AddMonths(1).AddDays(-1);

N>Console.WriteLine("Более одного месяца");
N>Console.WriteLine(dt1.AddMonths(1) <= dt2);
N>Console.WriteLine(dt1.AddMonths(1) <= dt3);
N>Console.WriteLine(dt1.AddMonths(1) <= dt4);


Мудро. Но только на словах.
Можно обойтись без дат.
17.09 и 14.10 — между ними есть полный месяц?
месяцы отстоят друг от друга
если 2(и больше) — да есть
если 0 — нет
если 1 — число младшего меньше числа другого — да есть
если число младшего больше числа другого — нет
(да ещё учесть что пары могут быть подсунуты как попало, т.е. так 14.10 и 17.09)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.