Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
school_bot
14 / 12 / 3
Регистрация: 23.12.2013
Сообщений: 84
#1

UnixPosix, не ври мне! (неправильный подсчет времени вручную) - C++

03.01.2014, 18:15. Просмотров 304. Ответов 2
Метки нет (Все метки)

Проблема следующая - реализовал я нуля перевод из posix в человечную дату. А тут проблема появилась:
ввожу 54588753952 в свою программу, а также сюда http://www.cy-pr.com/tools/time/, всё совпадает, не считая разницы в почти 2 недели! В 20 веке, в 19 всё ок. Но уже при вводе 6338155552 разница получается один день!
Моя прога:
Введите время в Unix формате
6338155552
Конвертируем:
5.11.2170 6:45:52
На вышеупомянутом сайте:
Tue, 06 Nov 2170 06:45:52 GMT
В ЧЕМ ЖЕ ПРОБЛЕМА? чего я не знаю о современном времяисчислении?
Вот код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
#include <stdio.h>
#include <conio.h>
#include <clocale>
 
int main(void)
{
    setlocale(LC_ALL, "rus");
 
    printf("Введите время в Unix формате\n");
    long long int posix;
    scanf("%lld", &posix);
    printf("Конвертируем: \n"); 
    int day = 1, month = 1, year = 1970, hour = 0, min = 0, sec = 0;
    int yearTime = 31536000;
    while (posix >= yearTime) 
    {
        if (!(year % 4)) 
        {
            yearTime = 31622400;
            if (posix < yearTime) 
            {
                break;
            }
        }
        posix -= yearTime;
        year++;
        yearTime = 31536000;
    }
    int febDays = 28;
    if (!(year % 4)) {
        febDays++;
    }
    int days = 1;
    while (posix >= 86400) 
    {
        posix -= 86400;
        days++;
    }
    if (days <= 31) {
        month = 1;
        day = days;
    } else if (days <= 31 + febDays) {
        month = 2;
        day = days - 31;
    } else if (days <= 62 + febDays) {
        month = 3;
        day = days - 31 - febDays;
    } else if (days <= 92 + febDays) {
        month = 4;
        day = days - 62 - febDays;
    } else if (days <= 123 + febDays) {
        month = 5;
        day = days - 92 - febDays;
    } else if (days <= 153 + febDays) {
        month = 6;
        day = days - 123 - febDays;
    } else if (days <= 184 + febDays) {
        month = 7;
        day = days - 153 - febDays;
    } else if (days <= 215 + febDays) {
        month = 8;
        day = days - 184 - febDays;
    } else if (days <= 245 + febDays) {
        month = 9;
        day = days - 215 - febDays;
    } else if (days <= 276 + febDays) {
        month = 10;
        day = days - 245 - febDays;
    } else if (days <= 306 + febDays) {
        month = 11;
        day = days - 276 - febDays;
    } else {
        month = 12;
        day = days - 306 - febDays;
    }
    while (posix >= 3600) 
    {
        posix -= 3600;
        hour++;
    }
    while (posix >= 60) 
    {
        posix -= 60;
        min++;
    }
    sec = posix;
    printf("%d.%d.%d %d:%d:%d\n", day, month, year, hour, min, sec);
 
    printf("\n\n... Нажмите любую клавишу для выхода");
    _getch();
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.01.2014, 18:15
Здравствуйте! Я подобрал для вас темы с ответами на вопрос UnixPosix, не ври мне! (неправильный подсчет времени вручную) (C++):

Неправильный подсчет количества треугольников - C++
Здравствуйте, уважаемые пользователи. Вынужден обратиться к Вам за помощью, так как сам просто не понимаю, в чем беда. Передо мной...

Гиперболический Синус в ряд - неправильный подсчет - C++
Имеется ряд sh(x) = Сумма от i до N 1/(2i+1)!*x2i+1 вот код#include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;math.h&gt; using namespace...

Быстрая сортировка, неправильный подсчет количества сравнений и перестановок - C++
Сортирует верно (по убыванию элементов в строке), а кол-во сравнений и перестановок выдает ошибочно В первом скрине показывается...

Подсчет времени через QueryPerformanceCounter - C++
Есть класс массив, есть функции сортировки: вставками, выбором, пузырьком и т.д. Нужно реализовать функцию для подсчета времени роботы...

Подсчет времени выполнения функции - C++
Делаю 2 вида сортировки, не знаю как подсчитать их время. #include &lt;iostream&gt; #include &lt;time.h&gt; #include &lt;conio.h&gt; using namespace...

Подсчет времени работы программы - C++
Есть код программы. Задача такая - вставить таймер который будет считать сколько времени работала программа, а результат надо вывести в...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
valeriikozlov
Эксперт C++
4670 / 2496 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
03.01.2014, 19:36 #2
Цитата Сообщение от school_bot Посмотреть сообщение
чего я не знаю о современном времяисчислении?
судя по всему вот чего (из википедии):
год является високосным в двух случаях: либо он кратен 4, но при этом не кратен 100, либо кратен 400. Год не является високосным, если он не кратен 4, либо он кратен 100, но при этом не кратен 400.
т.е. 1600, 2000, 2400 года являются високосными, а 2100, 2200, 2300 не являются високосными.
school_bot
14 / 12 / 3
Регистрация: 23.12.2013
Сообщений: 84
03.01.2014, 19:43  [ТС] #3
спасибо, тема закрыта. if (!(year % 4) && ((year % 100) || !(year % 400)))
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.01.2014, 19:43
Привет! Вот еще темы с ответами:

Подсчет времени выполнения процедуры - C++
Такой вопрос- необходимо получить время выполнения процедуры сортировки массива. Для этого я использовал следующее выражение void...

Подсчет времени работы программы - C++
пожалуйста помогите посчитать время программы с функцией.не знаю почему программа выдает что-то странное,вместо сложения,а время пишет 0. ...

Подсчет времени выполнения сортировки - C++
Подскажите, пожалуйста, как написать в программе, чтобы подсчитывало время выполнения сортировки? Там как-то надо ввести &quot;clock time&quot; ...

UnixPosix, не ври мне! (неправильный подсчет времени вручную) - C++ Linux
Проблема следующая - реализовал я нуля перевод из posix в человечную дату. А тут проблема появилась: ввожу 54588753952 в свою программу,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru