Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Количество дней после 1900 года / 12 сообщений из 12, страница 1 из 1
01.02.2007, 09:31:03
    #34298086
Galogen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количество дней после 1900 года
Господа, есть необходимость вычислить количество дней прошедших от 1900 года на конкретную дату. Существет ли, какая функция подсчета этого значения?
...
Рейтинг: 0 / 0
01.02.2007, 09:44:30
    #34298119
Ruslan.Isbarov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количество дней после 1900 года
Первое что пришло на ум. Прошу строго не судить :)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
/* 01.01.1900 00:00 */
Calendar calendar = Calendar.getInstance();
calendar.set( 1900 ,  1 ,  1 ,  0 ,  0 ,  0 );

Date today =  new  Date();

 long  msSince = today.getTime() - calendar.getTime().getTime();
 long  days = msSince / ( 1000  *  60  *  60  *  24 );

System.out.println("days = " + days);
...
Рейтинг: 0 / 0
01.02.2007, 09:54:43
    #34298149
Ruslan.Isbarov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количество дней после 1900 года
Патч:

Код: plaintext
1.
 long  msSince = today.getTime() - calendar.getTimeInMillis();
...
Рейтинг: 0 / 0
01.02.2007, 10:40:39
    #34298310
fjord
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количество дней после 1900 года
2 Ruslan.Isbarov и еще если первое января 1900го, то
Код: plaintext
calendar.set( 1900 ,  0 ,  0 ,  0 ,  0 ,  0 );
:)
...
Рейтинг: 0 / 0
01.02.2007, 10:45:30
    #34298337
Galogen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количество дней после 1900 года
ДА.. Январь нулевой месяц :)

Ruslan.Isbarov, спасибо за наводку. Буду копать дальше. У меня не сходится на 2 дня с представлениями системы. По мнению HP 1 января 2007 года - это 39083 день, а получается на 2 дня меньше... что-то где-то не досчитали...

Всем спасибо.
...
Рейтинг: 0 / 0
01.02.2007, 10:50:54
    #34298360
Ruslan.Isbarov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количество дней после 1900 года
fjord2 Ruslan.Isbarov и еще если первое января 1900го, то
Код: plaintext
calendar.set( 1900 ,  0 ,  0 ,  0 ,  0 ,  0 );
:)
Блин, точняк.
...
Рейтинг: 0 / 0
01.02.2007, 11:03:36
    #34298407
Ruslan.Isbarov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количество дней после 1900 года
GalogenУ меня не сходится на 2 дня с представлениями системы. По мнению HP 1 января 2007 года - это 39083 день, а получается на 2 дня меньше... что-то где-то не досчитали...

Всем спасибо.
Думаю, просто не досчитываем пару дней - текущий день и день 01.01.1900

с 01.01.1900 по 01.01.2007: прошло 107 лет из которых 27 високосных годов (1900, 1904, 1908, 1912, 1916, 1920, 1924, 1928, 1932, 1936, 1940, 1944, 1948, 1952, 1956, 1960, 1964, 1968, 1972, 1976, 1980, 1984, 1988, 1992, 1996, 2000, 2004). Т.е.

80 * 365 + 27 * 366 = 39082 дней + 1 текущий день :)
...
Рейтинг: 0 / 0
01.02.2007, 13:49:21
    #34299116
Galogen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количество дней после 1900 года
Код: plaintext
1.
2.
3.
4.
5.
6.
Calendar c = Calendar.getInstance();
         Calendar calendar = Calendar.getInstance();
         calendar.set( 1900 ,  0 ,  1 ,  0 ,  0 ,  0 );
         c.set(Year, Month -  1 /* номер месяца -1*/, Day,  0 ,  0 ,  0 );
          long  msSince = c.getTimeInMillis() - calendar.getTimeInMillis();
          long  days = (msSince / ( 1000  *  86400 ));

Считаем в днях... я не совсем понимаю причем тут года... тем более високосные,
msSince - это кол-во миллисекунд за это время... делим на 1000 * 86400, получаем количество дней... года високосные никак не влияют... или я просто непонимаю чего то
...
Рейтинг: 0 / 0
01.02.2007, 15:32:30
    #34299533
sendoff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количество дней после 1900 года
GalogenПо мнению HP 1 января 2007 года - это 39083 день, а получается на 2 дня меньше... что-то где-то не досчитали...
Всем спасибо.
HP ошибается. :)
Проводя те же вычисления, что и Ruslan.Isbarov, но учтя, что 1900 - невисокосный год, получим, что 1 января 2007 года - 39082 день.
...
Рейтинг: 0 / 0
01.02.2007, 15:45:28
    #34299578
sendoff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количество дней после 1900 года
Код: plaintext
1.
2.
3.
4.
5.
6.
        Calendar c = Calendar.getInstance();
        Calendar calendar = Calendar.getInstance();
        calendar.set( 1900 ,  0 ,  1 ,  0 ,  0 ,  0 );
        c.set( 2007 ,  0 ,  1 ,  0 ,  0 ,  0 );
         long  msSince = c.getTimeInMillis() - calendar.getTimeInMillis();
         long  days = (msSince / ( 1000  *  86400 ));
        System.out.println(days);
А этот код выводит правильный результат - 39081.
...
Рейтинг: 0 / 0
01.02.2007, 16:21:37
    #34299727
Galogen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количество дней после 1900 года
этот код выводит результат - 39081. Поставлю просто +2, птому как ЭТО происходит всегда... и в комментах напишу как HP /*Hack*/
...
Рейтинг: 0 / 0
01.02.2007, 16:35:12
    #34299776
Я
Я
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количество дней после 1900 года
Че за ХРшная система?
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Количество дней после 1900 года / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]