информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Spanning Tree Protocol: недокументированное применениеЗа кого нас держат?
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Очередное исследование 19 миллиардов... 
 Оптимизация ввода-вывода как инструмент... 
 Зловреды выбирают Lisp и Delphi 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / operating systems
Имя Пароль
если вы видите этот текст, отключите в настройках форума использование JavaScript
ФОРУМ
все доски
FAQ
IRC
новые сообщения
site updates
guestbook
beginners
sysadmin
programming
operating systems
theory
web building
software
hardware
networking
law
hacking
gadgets
job
dnet
humor
miscellaneous
scrap
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
Только что почитал. Да все действительно так. ИМХО они перемудрили 27.05.03 12:32  Число просмотров: 1774
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
> помоему тут все доступно изложено:
> это количество 100-наносекундных интервалов прошедших с
> January 1, 1601.
> время естественно в UTC. какие проблемы то?
> может математику стоит подучить?
Не только математику. На самом деле дата 01.01.1601 была еще в григорианском летоисчислении, а потому если уж пересчитывать количество наносекунд до этой даты, то нужно учитывать выпавшие 11 дней и другое исчисление (или полное отсутствие - не помню) високосных годов до 1752 года.

Как по мне так лучше б они взяли в качестве точки отсчета ну хотя бы 1901. Отрицательное время все таки не так путает, как непонятно какая дата.

http://www.didyouknow.cd/russian/calendar_ru.htm
"В сентябре 1752 года, в Британии и ее американских колониях Юлианский календарь сменил Григорианский. Юлианский календарь на 11 дней назад от Григорианского, поэтому, во время его смены, после 14 сентября было 2 сентября. В результате - с 3 по 13 сентября не было абсолютно ничего!"
<operating systems>
ZwQuerySystemTime 27.05.03 08:16  
Автор: ?? Статус: Незарегистрированный пользователь
<"чистая" ссылка>
В книге Нэббета сказано что эта функция возвращает текущее время в стандартном формате

Что это за формат?
С функцией GetSystemTime все просто и понятно
А тут я не понимаю что с этими интервалами по 100 нс делать?

ZwQuerySystemTime(OUT PLARGE_INTEGER CurrentTime);

CurrentTime
Points to a variable that receives the current time of day in the standard time format
(that is, the number of 100-nanosecond intervals since January 1, 1601)
ZwQuerySystemTime 27.05.03 10:17  
Автор: cb <cb> Статус: Member
<"чистая" ссылка>
> А тут я не понимаю что с этими интервалами по 100 нс
> делать?
>
> ZwQuerySystemTime(OUT PLARGE_INTEGER CurrentTime);
>
> CurrentTime
> Points to a variable that receives the current time of day
> in the standard time format
> (that is, the number of 100-nanosecond intervals since
> January 1, 1601)


помоему тут все доступно изложено:
это количество 100-наносекундных интервалов прошедших с January 1, 1601.
время естественно в UTC. какие проблемы то?
может математику стоит подучить?

cb.
Только что почитал. Да все действительно так. ИМХО они перемудрили 27.05.03 12:32  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
> помоему тут все доступно изложено:
> это количество 100-наносекундных интервалов прошедших с
> January 1, 1601.
> время естественно в UTC. какие проблемы то?
> может математику стоит подучить?
Не только математику. На самом деле дата 01.01.1601 была еще в григорианском летоисчислении, а потому если уж пересчитывать количество наносекунд до этой даты, то нужно учитывать выпавшие 11 дней и другое исчисление (или полное отсутствие - не помню) високосных годов до 1752 года.

Как по мне так лучше б они взяли в качестве точки отсчета ну хотя бы 1901. Отрицательное время все таки не так путает, как непонятно какая дата.

http://www.didyouknow.cd/russian/calendar_ru.htm
"В сентябре 1752 года, в Британии и ее американских колониях Юлианский календарь сменил Григорианский. Юлианский календарь на 11 дней назад от Григорианского, поэтому, во время его смены, после 14 сентября было 2 сентября. В результате - с 3 по 13 сентября не было абсолютно ничего!"
Только что почитал. Да все действительно так. ИМХО они перемудрили 28.05.03 11:14  
Автор: cb <cb> Статус: Member
<"чистая" ссылка>
может я чего не понял, но историческая справка это конечно интересно, но на работу ф-й особо не сказывается:

  #define MINUTE                   60000     //msec
  #define HOUR                     3600000   //msec
  #define DAY                      86400000  //msec
  #define GREGORIAN_CUTOVER_YEAR   1582

bool KTime::IsLeapYear(int nYear)
{
  return nYear >= GREGORIAN_CUTOVER_YEAR ?
                  ((nYear%4 == 0) && ((nYear%100 != 0)|(nYear%400 == 0))) : // Gregorian
                  (nYear%4 == 0);                                              // Julian
}

void KTime::GetTime(__int64 nSystemTime, int& nHour, int& nMin, int& nMSec)
{
  __int64 nTmp;

  nSystemTime = nSystemTime / 10 / 1000; // nTime into msec
  nSystemTime = nSystemTime % DAY;       // 
  nTmp = (nSystemTime / HOUR);
  nHour = (int) nTmp;
  nTmp = (nSystemTime % HOUR) / MINUTE;
  nMin = (int) nTmp;
  nTmp = (nSystemTime % HOUR) % MINUTE;
  nMSec = (int) nTmp;
}

void KTime::GetDate(__int64 nSystemTime, int& nYear, int& nMonth, int& nDay)
{
  __int64 nDays;
  int     nDaysOfMonth[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };

  nSystemTime = nSystemTime / 10 / 1000; // nTime into msec
  nDays = 1 + (nSystemTime / DAY);       // 

  for (int i=1601; ; ++i)
  {
    if (IsLeapYear(i))
    {
      if (nDays>366)
        nDays -= 366;
      else
        break;
    }
    else
    {
      if (nDays>365)
        nDays -= 365;
      else
        break;
    }
  }

  nYear = i;

  if (IsLeapYear(nYear))
    nDaysOfMonth[1]++;    

  for (i=0; i<12; ++i)
  {
    if (nDays <= nDaysOfMonth[i])
      break;
    nDays -= nDaysOfMonth[i];
  }

  nMonth = i+1;
  nDay = (int)nDays;
}


---

cb.
Да такой код я и сам написать могу :-) 28.05.03 11:40  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
> может я чего не понял, но историческая справка это конечно
> интересно, но на работу ф-й особо не сказывается:
Здесь предпосылка неверная. Для примера, тебе назначат встречу в 2 часа ночи последнего воскресенья сентября (или октября - у кого как). Ну для какого то конкретного года тебе конечно скажут конкретную дату). Вроде все хорошо. Но на поверку оказывается, что в последнем то воскресеньи 3 часа ночи наступает дважды из-за перевода часов. А если смещение в две недели.

Короче, реальное 1 января 1601 года и то что принято в мелкософте - это совершенно разные вещи (разница - минимум 2 недели, а то и больше). Я ничего не имею против и вроде как понятно что имели в виду. Но уж очень мелкософты любят вводить свои стандарты в пику общепринятым.
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2025 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach