![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Андрей |
|
|||
|
Unregistered |
Доброго дня!
Вот пишу свою вторую порогу по подсчету трафика на подобие сарга. Основывается она на логах сквида. Поскольку только учусь программировать решил для начало написать сие под винды . Все более и менее понятно алгоритм составил но не хватает практических знаний. Лог сквида выглядит так : Время байты урл ип 1009003201 32424 http://www.yandex.ru 10.10.10.10 Проблема моя в следующем, как мне перевести дату из миллисекунд в нормальный вид? |
|||
|
||||
| Baa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2639 Регистрация: 12.4.2002 Где: Москва Репутация: 8 Всего: 12 |
помойму это не милисекунды, а юникстайм (время в секундах, прошедших с какого-то года (не помню с какого точно))
попробуй всякие функции перевода времени юникс во время дос... не помню как точно, вроде unixtimetodostime...или просто unixtodos... вобщем найти реально... -------------------- "Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande |
|||
|
||||
| Андрей |
|
|||
|
Unregistered |
Да ты прав это кол-во сикунд истекшие начиная с 01.01.1970
с помощью перла все очень просто реализуется perl -e '(102900222)."\n"', я, конечно, мог бы запускать скрипт с помощью крона преобразовывать дату и по фтп качать на виндовую тачку, а там иметь обработанный файл, но этот вариант мне не слишком по душе хотелось бы одно программой все обрабатывать |
|||
|
||||
| bercut |
|
|||
|
Unregistered |
Подключаешь библиотеку #include <time.h> и используешь функцию ctime(). |
|||
|
||||
| Klin |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1938 Регистрация: 7.10.2002 Где: Краснодар Репутация: нет Всего: 25 |
Делить!
-------------------- Я человек - попробуйте обвинить меня за это. |
|||
|
||||
| Baa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2639 Регистрация: 12.4.2002 Где: Москва Репутация: 8 Всего: 12 |
unixtodos
dostounix -------------------- "Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande |
|||
|
||||
| Андрей |
|
|||
|
Unregistered |
Подскажите пожалуйста, что тут не так, почему дата выводится не так как нужно . Например я ввожу 1029003201 , а он мне выводит следующие
thu jan 01 03 хотя , я точно знаю, что дата долж быть другой. #include <stdio.h> #include <time.h> int main(void) { char ut[9]; gets(ut); time_t lt; lt = *ut; printf(ctime(<)); return 0; } |
|||
|
||||
| AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: нет Всего: 118 |
Так аргумент у ctime(long integer), а ты ему что скормил ? Ну и получил в ответ. если у тебя char ut[9] тогда можно использовать что-то типа такого printf(ctime(atol(ut))); Только тогда уж не забудь в конце массива ut нули забить. |
|||
|
||||
| bercut |
|
|||
|
Unregistered |
Все она так выводит, т.к. ctime была позаимствона из UNIX, вследствии чего вот такой формат вывода. Я лично переводил этот формат в свой вот таким образом, а ты можешь придумать что-нибудь другое, хотя возможно есть другие способы: String Str1; String Strs = ctime(&t); if (Strs.SubString(1,3) == "Mon") Str1 = "Пн "; if (Strs.SubString(1,3) == "Tue") Str1 = "Вт "; if (Strs.SubString(1,3) == "Wed") Str1 = "Ср "; if (Strs.SubString(1,3) == "Thu") Str1 = "Чт "; if (Strs.SubString(1,3) == "Fri") Str1 = "Пт "; if (Strs.SubString(1,3) == "Sat") Str1 = "Сб "; if (Strs.SubString(1,3) == "Sun") Str1 = "Вс "; Str1 = Str1 + Strs.SubString(9,2); if (Strs.SubString(5,3) == "Jan") Str1 = Str1 + ".01."; if (Strs.SubString(5,3) == "Feb") Str1 = Str1 + ".02."; if (Strs.SubString(5,3) == "Mac") Str1 = Str1 + ".03."; if (Strs.SubString(5,3) == "Apr") Str1 = Str1 + ".04."; if (Strs.SubString(5,3) == "May") Str1 = Str1 + ".05."; if (Strs.SubString(5,3) == "Jun") Str1 = Str1 + ".06."; if (Strs.SubString(5,3) == "Jul") Str1 = Str1 + ".07."; if (Strs.SubString(5,3) == "Aug") Str1 = Str1 + ".08."; if (Strs.SubString(5,3) == "Sep") Str1 = Str1 + ".09."; if (Strs.SubString(5,3) == "Oct") Str1 = Str1 + ".10."; if (Strs.SubString(5,3) == "Nov") Str1 = Str1 + ".11."; if (Strs.SubString(5,3) == "Dec") Str1 = Str1 + ".12."; Str1 = Str1 + Strs.SubString(21,4); Str1 = Str1 + " " + Strs.SubString(12,8); Label->Caption = Str1; |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |