forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Основной форум (http://forum.boolean.name/forumdisplay.php?f=49)
-   -   Вот это дела!! (http://forum.boolean.name/showthread.php?t=8892)

ssman 13.08.2009 14:22

Вот это дела!!
 
PHP код:

Program GetMonth;
var 
time,god,mes,den:integer;
Begin
    time
:=GetCurrentTime;
    
god:=GetYear(time);
    
mes:=GetMonth(time);
    
den:=GetDay(time);
    
Drawtext(''+den+'  '+mes+'  '+god,0,0);
  
Repaint;
    while 
GetKeypressed<>KE_KEY5 do Delay(100);
End

Сия прекрасная программа выдает мне что месяц август является седьмым. В винде точно стоит месяц август. И вобще если переставить месяц в винде то прога выдает номер месяца на единицу меньше чем на самом деле. Это что такое? у всех чтоли так?

Кстати на телефоне пробовал - то же самое.

jimon 13.08.2009 21:38

Ответ: Вот это дела!!
 
ssman
может месяца с нулевого считаются ?

ssman 14.08.2009 10:26

Ответ: Вот это дела!!
 
судя по всему этому - да, но я совсем не понимаю зачем было так всё усложнять и вносить такие непонятки которые даже не отразили в справке, будто ето само собой разумеещееся) нигде такого не видел

Шуранов 14.08.2009 11:40

Ответ: Вот это дела!!
 
Хм, просто рассчитано было на то, что люди знают *nix. localtime в *nix выдает месяцы в нумерации с нулевого. Странно еще, что вам к году 1900 добавлять не пришлось.

jimon 14.08.2009 13:04

Ответ: Вот это дела!!
 
ssman
для людей первая цифра это 1, для программистов первая цифра это 0
это выходит из формулы расчёта смещения в масиве (pointer + var_size * index) из-за которой получается что первый елемент в масиве имеет индекс 0 :)

ssman 14.08.2009 23:12

Ответ: Вот это дела!!
 
jimon

А программисты ето не люди?:-D

Кстати тогда странно что только с месяцем такая ерунда. Тогда и день месяца могли бы с нуля считать) и Год)

Mach94 15.08.2009 23:09

Ответ: Вот это дела!!
 
Ха, я вот тоже вчера немного ужаснулся, когда узнал что август седьмой... но решил эту проблему прибавлением 1 к getMonth.

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

function getMonth(time: integer): integer;

Возвращает номер месяца в году для данного времени time (представленного в количестве секунд, прошедших с 1 января 1970 г. и получаемого с помощью функции getCurrentTime). Возвращаемое значение может быть между 1 и 12.

такчто скорее всего это функция работает неправильно...

Randomize 16.08.2009 02:41

Ответ: Вот это дела!!
 

Кстати а что было 1 января 1970? Всегда было интересно :/
Почему именно 1970 а не 1960..
Погуглил чёт не нашол (наверно хреново искал)

Pyth_ON 17.08.2009 01:48

Ответ: Вот это дела!!
 
Цитата:

Сообщение от Randomize (Сообщение 114596)
Кстати а что было 1 января 1970? Всегда было интересно :/
Почему именно 1970 а не 1960..
Погуглил чёт не нашол (наверно хреново искал)

началась эра UNIX


Часовой пояс GMT +4, время: 16:29.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot