2014-11-14 3 views
-5

Я пытаюсь преобразовать время из метки времени ISO8601.конвертировать временную метку ISO8601 с кодом C

Я хочу удалить «T» с отметкой времени Exemple:

"0001-01-01T17:45:33" --> "0001-01-01 17:45:33" 

это преобразование полезно преобразовать метки времени к эпохе Время

+5

Вы уже задавали этот вопрос здесь, в такой же структуре, без кода C вообще. Опубликуйте свой код - где выделена ваша строка ввода и где вы хотите написать строку вывода? –

+0

, пожалуйста, внимательно прочитайте вопрос не тот же !!!!!!!!! –

+0

Итак, вот такой технически подробный ответ, как ваш вопрос: Сканируйте строку ввода слева направо и замените каждое вхождение символа 'T' или символа' -' символом пробела. –

ответ

-1

Я TESTE с этим кодом, он отлично работает для меня

#include <stdio.h> 
#include <string.h> 

int main() { 
    char string[] = {"0001-01-01T17:45:33\0"}; 

    char *temp; 

    temp = strchr(string, 'T') ; 
    *temp= ' '; 
    printf("%s\n", temp); 
    printf("%s\n", string); 
} 
+2

Прежде всего опубликуйте это в вопросе не как отдельный ответ. Во-вторых, если все будет хорошо, тогда с чего начать? –

+0

в первый раз у меня нет ответа на это, когда какой-либо орган не хочет отвечать, я ищу это в другом форуме –

1

вы смотрели на

char *strptime(const char *s, const char *format, struct tm *tm); 

от time.h?

Например:

#include<stdio.h> 
#define __USE_XOPEN 
#include<time.h> 

int main(){ 
    char newtime[100]; 
    const char *time="0001-01-01T17:45:33"; 
    struct tm tm_; 

    strptime(time,"%FT%T",&tm_); 

    strftime(newtime,100,"%F %T",&tm_); 

    printf("%s\n",newtime); 
    printf("Epoch time:%d\n",(int)mktime(&tm_)); 
    return 0; 
} 

Выход:

1-01-01 17:45:33 
Epoch time:-1 
+0

, когда метка времени содержит «T», это создает проблему! –

+0

mktime возвращает -1, поскольку дата ввода находится до начала эпохи – jmajnert