URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 7693
[ Назад ]

Исходное сообщение
"C\C++ Получить дату в секундах"

Отправлено LXD , 10-Ноя-08 11:01 
Друзья, помогите пожалуйста с задачкой:
есть дата - 10.02.08 10:50:12, необходимо перевести в секунды (linux формат). Всю голову сломал.. может кто сталкивался? (С\С++)


Содержание

Сообщения в этом обсуждении
"Осторожно! Неразрешимая задача!"
Отправлено Andrey Mitrofanov , 10-Ноя-08 11:49 
>Друзья, помогите пожалуйста с задачкой:
>есть дата - 10.02.08 10:50:12, необходимо перевести в секунды (linux формат). Всю

$ date -d "2008-02-10 10:50:12"
Вск Фев 10 10:50:12 MSK 2008
$ date -d "2008-02-10 10:50:12" +%s
1202629812
$ _

>голову сломал.. может кто сталкивался? (С\С++)

Опустить глаза (осторожно, не сломайте!) ниже и почитать (тяжело, но надо же себя заставлять!) про "Как получить время заданного форамата (+долисекунды) в С" - http://www.opennet.me/openforum/vsluhforumID9/7672.html .

Во-о-от... Дальше - самое тяжёлое, чему учат примерно в старшей группе детсада: сложить из имеющихся кубиков желаемый доми^Wрезультат. Дерзайте, Вы сможете!


"C\C++ Получить дату в секундах"
Отправлено phpcoder , 10-Ноя-08 12:13 
>Друзья, помогите пожалуйста с задачкой:
>есть дата - 10.02.08 10:50:12, необходимо перевести в секунды (linux формат). Всю
>голову сломал.. может кто сталкивался? (С\С++)

А сам?
man strptime
man mktime

Вот пример:

#define _XOPEN_SOURCE    /* glibc2 needs this */
#include <time.h>
#include <stdio.h>

int main(void) {
    
    const char date[] = "10.02.08 10:50:12";
    struct tm tm;
    
    char *ret = strptime(date, "%d.%m.%y %T", &tm);
    if (ret == NULL) {
        fprintf(stderr, "strptime(3) error: can't parse date!\n");
        return 1;
    }
    
    time_t time = mktime(&tm);
    if (time == (time_t)-1) {
        fprintf(stderr, "mktime(3) fails with error: can't convert date to time!\n");
        return 1;
    }
    
    printf("%s is %ld\n", date, time);
    
    return 0;
}

Собираем:
user-desktop% gcc -W -Wall strptime_test.c -o strptime_test
user-desktop% ./strptime_test
10.02.08 10:50:12 is 1202619012

Проверяем:
user-desktop% date -d "2008-02-10 10:50:12" +%s
1202619012


"C\C++ Получить дату в секундах"
Отправлено LXD , 10-Ноя-08 12:39 
Спасибо огромное!