|
|
|
Подскажите алгоритм для работы с датами
|
|||
|---|---|---|---|
|
#18+
Класс содержит установленные переменные Код: java 1. 2. 3. 4. 5. Переменные могут быть установлены некорректно - с превышением стандартного диапазона (например - days может равняться 312 дням). Нужно обработать данные значения, чтобы "лишние" величины перешли в переменные более высокого уровня. Например: 312 дней, если 30 дней в месяце, то 30 * 10 месяцев + 12 дней. Т.е. к months прибавляется 10 месяцев, days становится равным 12. В часе 60 минут. В дне 24 часа. В месяце 30 дней. В году - 12 месяцев. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2012, 15:03 |
|
||
|
Подскажите алгоритм для работы с датами
|
|||
|---|---|---|---|
|
#18+
Вот что я написал (Java): Код: java 1. 2. 3. 4. 5. 6. 7. Но может возникнуть ситуация, когда сколько-то часов надо считать за 1 месяц. Например: 50 часов - это 1 месяц. Вот здесь я уже теряюсь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2012, 15:08 |
|
||
|
Подскажите алгоритм для работы с датами
|
|||
|---|---|---|---|
|
#18+
Lonely MorganКласс содержит установленные переменные Код: java 1. 2. 3. 4. 5. Переменные могут быть установлены некорректно - с превышением стандартного диапазона (например - days может равняться 312 дням). Нужно обработать данные значения, чтобы "лишние" величины перешли в переменные более высокого уровня. Например: 312 дней, если 30 дней в месяце, то 30 * 10 месяцев + 12 дней. Т.е. к months прибавляется 10 месяцев, days становится равным 12. В часе 60 минут. В дне 24 часа. В месяце 30 дней. В году - 12 месяцев. 1) На самом деле, как Вы знаете, в месяце не 30 дней. 2) В текущей постановке, задача тривиальна: на каждом шаге нормализуется текущая единица, лишнее уходит выше (значение года, как понимаю, уже может быть любым). Для примера, Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2012, 15:33 |
|
||
|
Подскажите алгоритм для работы с датами
|
|||
|---|---|---|---|
|
#18+
Lonely Morganможет возникнуть ситуация, когда сколько-то часов надо считать за 1 месяц. Например: 50 часов - это 1 месяц. Вот здесь я уже теряюсь. Я тоже теряюсь... мне всегда казалось (если отбросить длины месяцев в 28-31 день), что в месяце 30*24=720 часов... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2012, 16:46 |
|
||
|
Подскажите алгоритм для работы с датами
|
|||
|---|---|---|---|
|
#18+
Lonely MorganКласс содержит установленные переменные Код: java 1. 2. 3. 4. 5. Переменные могут быть установлены некорректно - с превышением стандартного диапазона (например - days может равняться 312 дням). Нужно обработать данные значения, чтобы "лишние" величины перешли в переменные более высокого уровня. Например: 312 дней, если 30 дней в месяце, то 30 * 10 месяцев + 12 дней. Т.е. к months прибавляется 10 месяцев, days становится равным 12. В часе 60 минут. В дне 24 часа. В месяце 30 дней. В году - 12 месяцев.Как уже сказали месяца разные по количеству дней. Без начальной точки отсчета нормализовать нельзя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2012, 16:46 |
|
||
|
Подскажите алгоритм для работы с датами
|
|||
|---|---|---|---|
|
#18+
OoCcКак уже сказали месяца разные по количеству дней. Без начальной точки отсчета нормализовать нельзя.Как я уже сказал, в условии задачи положено, что в месяце 30 дней. Или некоторое количество часов. Я же не календарь пишу, а решаю определенную задачу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2012, 16:59 |
|
||
|
Подскажите алгоритм для работы с датами
|
|||
|---|---|---|---|
|
#18+
Lonely Morgan, Если месяц бьётся сразу на часы, какое возможно значение "дней"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2012, 17:04 |
|
||
|
Подскажите алгоритм для работы с датами
|
|||
|---|---|---|---|
|
#18+
Lonely MorganКак я уже сказал, в условии задачи положено, что в месяце 30 дней. Или некоторое количество часов. Я же не календарь пишу, а решаю определенную задачу.ну, тогда алгоритм должен включать целочисленное деление и деление по модулю. imho. ps. или целочисленное деление и вычитание. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2012, 17:14 |
|
||
|
Подскажите алгоритм для работы с датами
|
|||
|---|---|---|---|
|
#18+
Вот такой кусок кода: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. minutesForMonth - число минут в месяце. Стандартное значение - 60 * 30 * 24 min, h, d, m, y - входные параметры. После запуска этого кода, значения нормализуются и во внутренние поля класса записываются правильные значения. Не могу понять, что тут не правильно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2012, 17:25 |
|
||
|
Подскажите алгоритм для работы с датами
|
|||
|---|---|---|---|
|
#18+
Lonely Morgan, 1) Что там делает Math.abs()? Если числа положительные, он не нужен; если отрицательные - вреден. 2) Код: java 1. 2. Зашибись. Было month=5, min=0. Стало month=0, min=0. Есть такая полезная штука, называется отладчик. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2012, 17:53 |
|
||
|
Подскажите алгоритм для работы с датами
|
|||
|---|---|---|---|
|
#18+
Амига , ты ? те не стыдно ? бегом в избу-читальню, наверстывать знания в соответствии с должностью : time_t mktime(struct tm *tm); if structure members are outside their valid interval, they will be normalized (so that, for example, 40 October is changed into 9 November); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2012, 02:06 |
|
||
|
Подскажите алгоритм для работы с датами
|
|||
|---|---|---|---|
|
#18+
ДохтаРАмига , ты ? те не стыдно ? бегом в избу-читальню, наверстывать знания в соответствии с должностью : time_t mktime(struct tm *tm); if structure members are outside their valid interval, they will be normalized (so that, for example, 40 October is changed into 9 November); Я это все сделал через час-два после создания данного топега =) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2012, 16:15 |
|
||
|
Подскажите алгоритм для работы с датами
|
|||
|---|---|---|---|
|
#18+
Lonely Morgan, если это лаба - то нормально. Изучишь календарь и калькуляции. Но в продакшене так не делают. Школьники кодят разницу между датами и эпично фейлят - забывают к примеру переход на летнее время. Казалось - бы пустяк - 1 час но кому нахер надо потом краснеть, отчитываться или не дай бог платить за потерянные деньги. Поэтому юзай стандартный конструктор DateTime проверяй код ошибки или exception. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2012, 18:40 |
|
||
|
Подскажите алгоритм для работы с датами
|
|||
|---|---|---|---|
|
#18+
А если вот так? Код: sql 1. 2. 3. 4. 5. 6. 7. 8. Но это в случае, если нумеруется всё с нуля, если с одного - придётся вычитать единицу а потом после выполнения действий обратно прибалять. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2012, 23:07 |
|
||
|
Подскажите алгоритм для работы с датами
|
|||
|---|---|---|---|
|
#18+
Разумеется, годится это только для сферической задачи в вакууме, в котором в месяцах по 30 дней, а часовых поясов не существует. И то цифры лучше всего заменить константами, вдруг в этом вакууме поменяется календарь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2012, 23:11 |
|
||
|
Подскажите алгоритм для работы с датами
|
|||
|---|---|---|---|
|
#18+
Вот поверьте мне, это самый что ни на есть энетрпрайз, весьма крупного масштаба и да, там сплошь и рядом пристутствуют подобные условия ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2012, 15:26 |
|
||
|
Подскажите алгоритм для работы с датами
|
|||
|---|---|---|---|
|
#18+
Lonely Morgan, Условия параметрически заданного, одинакового количества часов в месяце с отсутствующими днями?! Ничего себе энтерпрайз у кого-то... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2012, 15:41 |
|
||
|
Подскажите алгоритм для работы с датами
|
|||
|---|---|---|---|
|
#18+
AbstractionLonely Morgan, Условия параметрически заданного, одинакового количества часов в месяце с отсутствующими днями?! Ничего себе энтерпрайз у кого-то...ну вот так вот ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2012, 15:50 |
|
||
|
Подскажите алгоритм для работы с датами
|
|||
|---|---|---|---|
|
#18+
1. Зачем самому производить нормализацию даты, если стандартный функционал (обычно) это и так умеет делать? 2. Откуда эти данные берутся в ненормализованном и раздробленном виде? Может проще привести обмен данными к адекватному виду, т.е. получать таймстамп, а не всю эту некорректную россыпь? Если это юзер вводит - ну так и скажи компу "Собери мне из этого таймстамп!" - он все сделает сам. Классика велосипедостроения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2012, 15:59 |
|
||
|
Подскажите алгоритм для работы с датами
|
|||
|---|---|---|---|
|
#18+
Lonely MorganВот поверьте мне, это самый что ни на есть энетрпрайз, весьма крупного масштаба и да, там сплошь и рядом пристутствуют подобные условиямда. Исходя из возможности того, что в начальном состоянии во всех переменных есть какие-то значения, притом ненормализованные, то я вижу такой например подход: 1. все часы, дни, месяцы, года - переводятся в минуты, т.е. суммируются в переменную "минуты". 2. переменная "минуты" раскидывается обратно по часам, дням, месяцам, годам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2012, 16:09 |
|
||
|
Подскажите алгоритм для работы с датами
|
|||
|---|---|---|---|
|
#18+
S.G.Lonely MorganВот поверьте мне, это самый что ни на есть энетрпрайз, весьма крупного масштаба и да, там сплошь и рядом пристутствуют подобные условиямда. Исходя из возможности того, что в начальном состоянии во всех переменных есть какие-то значения, притом ненормализованные, то я вижу такой например подход: 1. все часы, дни, месяцы, года - переводятся в минуты, т.е. суммируются в переменную "минуты". 2. переменная "минуты" раскидывается обратно по часам, дням, месяцам, годам. И какая разница как котить мотоцикл - справа или слева? Он и так делает то же, только по-другому. И это есть не хорошо. Это как делать расчет зарплат на бумажке в столбик, отвлекаясь на новости по телеку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2012, 16:43 |
|
||
|
Подскажите алгоритм для работы с датами
|
|||
|---|---|---|---|
|
#18+
Edd.DragonИ какая разница как котить мотоцикл - справа или слева? Он и так делает то же, только по-другому. И это есть не хорошо. Это как делать расчет зарплат на бумажке в столбик, отвлекаясь на новости по телеку.Я просто принял как данное (и неизменяемое) условие - наличие Код: sql 1. 2. 3. 4. 5. 12688367 При этом возможен "ненормализованный" случай minutes = 1724; hours = 0; days = 3215; months = 16; years = 0; При этом самое удобное (как мне кажется) - нормализация в два прохода, как я описал. Никто не спорит, что использовать компонент для даты/времени лучше, но может быть, здесь нечто совсем другое? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2012, 17:16 |
|
||
|
Подскажите алгоритм для работы с датами
|
|||
|---|---|---|---|
|
#18+
S.G.Никто не спорит, что использовать компонент для даты/времени лучше, но может быть, здесь нечто совсем другое? Ну ок. Пишем свой велосипед. Предлагаешь перевести все в минуты. Но ответов на вышепоставленные вопросы все-равно ведь не даешь. Как правильно перевести в минуты 400 месяцев? Как потом правильно минуты перевести в дату? В этом собственно и вопрос топика. Вот автор пишет: "В месяце 30 дней" - бред. И нужно это исправить хоть в алгоритме автора, хоть в твоем. Соответственно есть формулы, которые нужно нагуглить и реализовать. При том, что они реализованы, стандартны и каждому доступны, чтобы не плодить велосипедов с неправильными колесами и месяцами, в которых стабильно 30 дней =) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2012, 17:27 |
|
||
|
Подскажите алгоритм для работы с датами
|
|||
|---|---|---|---|
|
#18+
если Java, то Calendar запрещено что ли использовать? http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Calendar.html Или это поиск (если, как было замечено, это не учебные упражнения) каких-то иных способов работы с датами? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2012, 06:32 |
|
||
|
|

start [/forum/topic.php?fid=16&fpage=66&tid=1342203]: |
0ms |
get settings: |
8ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
79ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
75ms |
get tp. blocked users: |
2ms |
| others: | 241ms |
| total: | 449ms |

| 0 / 0 |
