Да, у меня и модераторов эта отметка по умолчанию не ставится
Quote (MCH)
Вначале ты написал, что точно не уверен с какой даты начинается отсчет
Я написал сразу про 100-й год, но потом засомневался (я никогда не пользовался такими датами) и решил проверить. Тут же нашел инфу в инете и дописал её в пост
Quote (MCH)
не указано минимальное число соответствующее 01.01.100
Ну и что? Игорь спрашивал про дату - я её и написал. Остальное вторично
Quote (MCH)
ты правишь свои посты без отметки об исправлении.
Да, у меня и модераторов эта отметка по умолчанию не ставится
Quote (MCH)
Вначале ты написал, что точно не уверен с какой даты начинается отсчет
Я написал сразу про 100-й год, но потом засомневался (я никогда не пользовался такими датами) и решил проверить. Тут же нашел инфу в инете и дописал её в пост
Quote (MCH)
не указано минимальное число соответствующее 01.01.100
Ну и что? Игорь спрашивал про дату - я её и написал. Остальное вторичноSerge_007
Ну и что? Игорь спрашивал про дату - я её и написал. Остальное вторично
Ты же привел мою цитату со ссылкой на свой ранее опубликованный пост (а то что он был исправлен этого не проследить) и со своей цитатой. Я понимаю это так, что ты раннее уже исчерпывающе ответил на вопрос, и что другие ответы лишние, что мне теперь свои посты удалять не смотря на то, что в них есть уточняющая и/или дополняющая информация о которой ты не написал?
Quote (Serge_007)
Ну и что? Игорь спрашивал про дату - я её и написал. Остальное вторично
Ты же привел мою цитату со ссылкой на свой ранее опубликованный пост (а то что он был исправлен этого не проследить) и со своей цитатой. Я понимаю это так, что ты раннее уже исчерпывающе ответил на вопрос, и что другие ответы лишние, что мне теперь свои посты удалять не смотря на то, что в них есть уточняющая и/или дополняющая информация о которой ты не написал?MCH
Сообщение отредактировал MCH - Пятница, 16.11.2012, 14:05
Ты же привел мою цитату со ссылкой на свой ранее опубликованный пост (а то что он был исправлен этого не проследить)
Дык я для чего ссылку-то и привел! Что бы видно было, что информация добавилась К сожалению на форуме, в принципе нет такой опции, как например у Шмуйловича, когда при правке поста он автоматом помечается как непрочтённый. В таком случае ссылку давать бы не пришлось
Quote (MCH)
Я понимаю это так, что ты раннее уже исчерпывающе ответил на вопрос, и что другие ответы лишние, что мне теперь свои посты удалять не смотря на то, что в них есть уточняющая и/или дополняющая информация о которой ты не написал?
Очень странная логика... Из чего можно было сделать такие выводы - мне не ведомо
Quote (MCH)
Ты же привел мою цитату со ссылкой на свой ранее опубликованный пост (а то что он был исправлен этого не проследить)
Дык я для чего ссылку-то и привел! Что бы видно было, что информация добавилась К сожалению на форуме, в принципе нет такой опции, как например у Шмуйловича, когда при правке поста он автоматом помечается как непрочтённый. В таком случае ссылку давать бы не пришлось
Quote (MCH)
Я понимаю это так, что ты раннее уже исчерпывающе ответил на вопрос, и что другие ответы лишние, что мне теперь свои посты удалять не смотря на то, что в них есть уточняющая и/или дополняющая информация о которой ты не написал?
Очень странная логика... Из чего можно было сделать такие выводы - мне не ведомо Serge_007
Немного ушли в сторону - я запутался в Ваших высших материях Когда я писал:
130118256000000000 это 1.5.2013 130171824000000000 это 2.7.2013 Но от 1.1.1601 - ну это не суть должно просто отличаться на 299 лет.
1) т.е. если считать от 1.1.1900 - должны получиться даты 1.5.2312 и 2.7.2312 соответственно (т.е. больше нужного на 299 лет) 2) А касательно того что xls может только 16 разрядов обрабатывать, может, например, поделить число на 100 и соответственно 100 раз прибавить полученное после деления число.
Немного ушли в сторону - я запутался в Ваших высших материях Когда я писал:
130118256000000000 это 1.5.2013 130171824000000000 это 2.7.2013 Но от 1.1.1601 - ну это не суть должно просто отличаться на 299 лет.
1) т.е. если считать от 1.1.1900 - должны получиться даты 1.5.2312 и 2.7.2312 соответственно (т.е. больше нужного на 299 лет) 2) А касательно того что xls может только 16 разрядов обрабатывать, может, например, поделить число на 100 и соответственно 100 раз прибавить полученное после деления число.ALARMus
Сообщение отредактировал ALARMus - Пятница, 16.11.2012, 15:03
Откуда берется число 299 лет? Понял, это Вы от 1900 отняли 1601. Думаю нужно началом отсчета считать 01.01.2001, а потом результат уменьшать на 400 лет, иначе цикл високосных лет будет не правильно учитываться
если 130118256000000000 разделить на 864000000000 то получим 150599,8(3) дней, это чуть больше 412 лет, таким образом дожен получится 2013 год (если считать от 01.01.1601)
Если числа большие и итоговые даты получаются больше 1900 года, то можно использовать формулу: [vba]
Code
=ДАТАМЕС(ДАТА(2001;1;1)+A1/864000000000;-4800)
[/vba] По Вашим данным у меня получилось 30.04.2013 и 01.07.2013
если даты получаются меньше 1900 года, то подойдет формула: [vba]
Откуда берется число 299 лет? Понял, это Вы от 1900 отняли 1601. Думаю нужно началом отсчета считать 01.01.2001, а потом результат уменьшать на 400 лет, иначе цикл високосных лет будет не правильно учитываться
если 130118256000000000 разделить на 864000000000 то получим 150599,8(3) дней, это чуть больше 412 лет, таким образом дожен получится 2013 год (если считать от 01.01.1601)
Если числа большие и итоговые даты получаются больше 1900 года, то можно использовать формулу: [vba]
Code
=ДАТАМЕС(ДАТА(2001;1;1)+A1/864000000000;-4800)
[/vba] По Вашим данным у меня получилось 30.04.2013 и 01.07.2013
если даты получаются меньше 1900 года, то подойдет формула: [vba]
Игорь, 0 в VBA это 30.12.1899, а нужно считать от 01.01.1601 таким образом получается не ровно 299 лет, а еще нужно прибавлять 3 2 дня К томуже лучше использовать смещение в 400 лет, циклы високосности совпадают
либо использовать такую UDF: [vba]
Code
Function mDate$(d#) mDate = Format(DateSerial(1601, 1, 1) + d / 864000000000#, "dd.mm.yyyy") End Function
[/vba]
Quote (Hugo)
У меня получается разница в 3 дня
Игорь, 0 в VBA это 30.12.1899, а нужно считать от 01.01.1601 таким образом получается не ровно 299 лет, а еще нужно прибавлять 3 2 дня К томуже лучше использовать смещение в 400 лет, циклы високосности совпадают
либо использовать такую UDF: [vba]
Code
Function mDate$(d#) mDate = Format(DateSerial(1601, 1, 1) + d / 864000000000#, "dd.mm.yyyy") End Function
Поясню где такие данные. В ActiveDirectory есть поле с типом Integer, называется accountExpire и оно как раз содержит такое значение. (описание кривое написано : "с точностью до 100 наносекунд, с 1.1.1601" - я расцениваю это как количество раз по 100 наносекунд, что подтверждают грубые расчеты)
Так вот эту правильную дату показывает оснастка (или через командную строку powershell) А то что видно там в виде цифры отображает другая программа, которая не делает преобразований в дату, а берет из поля что там есть.
Поэтому связь взаимооднозначная и это должно быть как правильный ответ
Quote (Hugo)
разница в 3 дня...
что то не дорабатываем
Поясню где такие данные. В ActiveDirectory есть поле с типом Integer, называется accountExpire и оно как раз содержит такое значение. (описание кривое написано : "с точностью до 100 наносекунд, с 1.1.1601" - я расцениваю это как количество раз по 100 наносекунд, что подтверждают грубые расчеты)
Так вот эту правильную дату показывает оснастка (или через командную строку powershell) А то что видно там в виде цифры отображает другая программа, которая не делает преобразований в дату, а берет из поля что там есть.
Поэтому связь взаимооднозначная и это должно быть как правильный ответ ALARMus
Нужно считать от начала дня 01.01.1601 или от конца, какой результат должен быть если прошло 0 раз по 100 наносекунд: 01.01.1601 или 02.01.1601? 1 раз по 100 наносекунд: 01.01.1601 или 02.01.1601? 863999999999 раз по 100 наносекунд: 01.01.1601 или 02.01.1601? 864000000000 раз по 100 наносекунд: 02.01.1601 или 03.01.1601?
если рассуждать логически: 130118256000000000 / 864000000000 = 150599,8(3) дней за период с 01.01.1601 по 01.01.2013 прошло ровно 412 лет, из которых 100 високосных и 312 невисокосных (1700, 1800, 1900 - не високосные) таким образом с 01.01.1601 по 01.01.2013 прошло 100*366 + 312*355 = 150480 дней остается еще 150599,8(3) - 150480 = 119 полных дней и 20 часов 01.02.2013 - 31 день 01.03.2013 - 28 дней 01.04.2013 - 31 день 30.04.2013 - 29 дней итого 31+28+31+29 = 119
Таким образом, с 01.01.1601 00:00 по 30.04.2013 20:00 прошло 130118256000000000 раз по 100 наносекунд Добавлять еще один день в расчеты или нет решайте сами
Quote (ALARMus)
Да что то на денек не совпадает
Quote (ALARMus)
ДАТА(2001;1;2) ... Вот так получается
Нужно считать от начала дня 01.01.1601 или от конца, какой результат должен быть если прошло 0 раз по 100 наносекунд: 01.01.1601 или 02.01.1601? 1 раз по 100 наносекунд: 01.01.1601 или 02.01.1601? 863999999999 раз по 100 наносекунд: 01.01.1601 или 02.01.1601? 864000000000 раз по 100 наносекунд: 02.01.1601 или 03.01.1601?
если рассуждать логически: 130118256000000000 / 864000000000 = 150599,8(3) дней за период с 01.01.1601 по 01.01.2013 прошло ровно 412 лет, из которых 100 високосных и 312 невисокосных (1700, 1800, 1900 - не високосные) таким образом с 01.01.1601 по 01.01.2013 прошло 100*366 + 312*355 = 150480 дней остается еще 150599,8(3) - 150480 = 119 полных дней и 20 часов 01.02.2013 - 31 день 01.03.2013 - 28 дней 01.04.2013 - 31 день 30.04.2013 - 29 дней итого 31+28+31+29 = 119
Таким образом, с 01.01.1601 00:00 по 30.04.2013 20:00 прошло 130118256000000000 раз по 100 наносекунд Добавлять еще один день в расчеты или нет решайте самиMCH
Сообщение отредактировал MCH - Пятница, 16.11.2012, 16:13
Спасибо, Михаил. Пакет анализа включен постоянно - иногда нужен для работы. И это было первое, что я полез смотреть... Не была включена версия VBA - включил-выключил, и как-то заработало
Спасибо, Михаил. Пакет анализа включен постоянно - иногда нужен для работы. И это было первое, что я полез смотреть... Не была включена версия VBA - включил-выключил, и как-то заработало Hugo