The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Как получить время заданного форамата (+долисекунды) в С"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [ Отслеживать ]

"Как получить время заданного форамата (+долисекунды) в С"  
Сообщение от Serega.M (ok) on 28-Окт-08, 13:21 
Требуется вывести на экран текущее время в формате Час:Минуты:Секунды:Долисекyнды.
Язык - C/C++
Среда - Linux (Cygwin или OpenSuse).

Помогите плиз. :)

Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Как получить время заданного форамата (+долисекунды) в С"  
Сообщение от Michelnok (??) on 28-Окт-08, 13:26 
>Требуется вывести на экран текущее время в формате Час:Минуты:Секунды:Долисекyнды.

Доли какого размера? Милли? Микро? Нано?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "Как получить время заданного форамата (+долисекунды) в С"  
Сообщение от Serega.M (ok) on 28-Окт-08, 13:41 
>>Требуется вывести на экран текущее время в формате Час:Минуты:Секунды:Долисекyнды.
>
>Доли какого размера? Милли? Микро? Нано?

Милли :)))

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "Как получить время заданного форамата (+долисекунды) в С"  
Сообщение от vic (??) on 28-Окт-08, 13:46 
>>>Требуется вывести на экран текущее время в формате Час:Минуты:Секунды:Долисекyнды.
>>
>>Доли какого размера? Милли? Микро? Нано?
>
>Милли :)))

man gettimeofday

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "Как получить время заданного форамата (+долисекунды) в С"  
Сообщение от Serega.M (ok) on 28-Окт-08, 13:54 
>>>>Требуется вывести на экран текущее время в формате Час:Минуты:Секунды:Долисекyнды.
>>>
>>>Доли какого размера? Милли? Микро? Нано?
>>
>>Милли :)))
>
>man gettimeofday

А можно примерчик?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "Как получить время заданного форамата (+долисекунды) в С"  
Сообщение от Michelnok (??) on 28-Окт-08, 13:59 
>>
>>man gettimeofday
>
>А можно примерчик?

Извини. Указание было правильное, и это единственная неочевидная для не-UNIX программиста функция. Как использовать ее и остальные (gmtime/localtime и printf) - выясни сам. Иначе тебе нечего делать в C.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

6. "Как получить время заданного форамата (+долисекунды) в С"  
Сообщение от Serega.M (ok) on 28-Окт-08, 14:06 
>>>
>>>man gettimeofday
>>
>>А можно примерчик?
>
>Извини. Указание было правильное, и это единственная неочевидная для не-UNIX программиста функция.
>Как использовать ее и остальные (gmtime/localtime и printf) - выясни сам.
>Иначе тебе нечего делать в C.

Ну, ладно :) Просто синтаксис не очень понятен для меня.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

7. "Как получить время заданного форамата (+долисекунды) в С"  
Сообщение от Serega.M (ok) on 29-Окт-08, 12:52 
Я сделал вот так:

#include "windows.h"
#include "stdio.h"

int main()
{
    SYSTEMTIME time;
    GetSystemTime(&time);
    printf ("Hours: %i;\n\rMinuts: %i;\n\rSeconds: %i;\n\rmiliseconds: %i\n\r", time.wHour+2, time.wMinute, time.wSecond, time.wMilliseconds);

}


Работает.. но я как не очень доволен, что часы корректирую... Можно как-нить это исправить???

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

8. "Как получить время заданного форамата (+долисекунды) в С"  
Сообщение от vic (??) on 29-Окт-08, 14:00 
>[оверквотинг удален]
>{
> SYSTEMTIME time;
> GetSystemTime(&time);
> printf ("Hours: %i;\n\rMinuts: %i;\n\rSeconds: %i;\n\rmiliseconds: %i\n\r", time.wHour+2, time.wMinute, time.wSecond, time.wMilliseconds);
>
>}
>
>
>Работает.. но я как не очень доволен, что часы корректирую... Можно как-нить
>это исправить???

1. это форум по unix/posix, а не windows(не posix совсем). Для posix-совместимых систем выше уже была указана нужная функция.
2. вышеуказанный код не портабелен и специфичен для windows.
3. банальное: где return или exit() ?
4. часы корректировать подобным образом это не по христиански :)
5. правильно \r\n, а не наоборот.
6. традиционно используется %d, хотя в windows хз
7. и наконец, формат в вашем примере не соответствует формату вывода в первом вашем посте :)

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

9. "Как получить время заданного форамата (+долисекунды) в С"  
Сообщение от Serega.M (ok) on 29-Окт-08, 19:18 
>1. это форум по unix/posix, а не windows(не posix совсем). Для posix-совместимых
>систем выше уже была указана нужная функция.
>2. вышеуказанный код не портабелен и специфичен для windows.
>3. банальное: где return или exit() ?
>4. часы корректировать подобным образом это не по христиански :)
>5. правильно \r\n, а не наоборот.
>6. традиционно используется %d, хотя в windows хз
>7. и наконец, формат в вашем примере не соответствует формату вывода в
>первом вашем посте :)

Могу сделать вывод - надо идти вам в QA.

1. Смотри ниже.
2. Согласен, но мне полюбе, так как за это мне не платят ;)
3. Добавил.. для меня не критично
4. Вот и я так думаю ;)
5. Ну, эт как посмотреть
6. Эх, традиции...
7. Формат не так уж и тяжело подделать

Сделал вот так для сравнения:
#include <sys/time.h>
#include <stdio.h>
#include <windows.h>

int main(void)
{
  char buffer[30];
  struct timeval tv;

  time_t curtime;

  gettimeofday(&tv, NULL);
  curtime=tv.tv_sec;

  strftime(buffer,30,"%H:%M:%S",localtime(&curtime));
  printf("\nLinux: ");
  printf("%s:%d Seconds???:%d",buffer,tv.tv_usec,tv.tv_sec);

  SYSTEMTIME time;
  GetSystemTime(&time);
  printf("\nWindows: ");
  printf ("%d:%d:%d:%d", time.wHour+2, time.wMinute, time.wSecond, time.wMilliseconds);

  return 0;
}

Получаю в результате:
Linux: 18:13:55:271892 Seconds???:1225296835
Windows: 18:13:55:271

Что по сути правильно, но только вот появились вопросы:
1. Почему секунды не совпадают в tv.tv_sec?
2. Почему не работает форматирование для %2.2d? Это можно исправить?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

10. "Как получить время заданного форамата (+долисекунды) в С"  
Сообщение от Keeper email(??) on 29-Окт-08, 19:46 
>2. Почему не работает форматирование для %2.2d? Это можно исправить?

Потому что так неправильно. Либо "%2.2f", либо "%2d".
man printf - format specifiers

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

11. "Как получить время заданного форамата (+долисекунды) в С"  
Сообщение от Serega.M (ok) on 30-Окт-08, 01:03 
>>2. Почему не работает форматирование для %2.2d? Это можно исправить?
>
>Потому что так неправильно. Либо "%2.2f", либо "%2d".
>man printf - format specifiers

Да и так он не работает.. :(

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

12. "Как получить время заданного форамата (+долисекунды) в С"  
Сообщение от vic (??) on 30-Окт-08, 14:45 
>Могу сделать вывод - надо идти вам в QA.
>1. Смотри ниже.
>2. Согласен, но мне полюбе, так как за это мне не платят
>;)

Учитесь делать правильные выводы. Вам намекают что вы не по адресу обратились с кодом под винду. Вы  же не спрашиваете на форуме фанатов volvo про технические характеристики стиральных машин ?

>3. Добавил.. для меня не критично

а потом самолеты падают, ну это тоже.. не критично.
>5. Ну, эт как посмотреть

а никак не смотреть, правильно \r\n и точка.
>7. Формат не так уж и тяжело подделать

че за бред, я говорю что вы просите один формат, а сами же выводите иначе, т.е. действуете не последовательно, причем тут подделать?

>Получаю в результате:
>Linux: 18:13:55:271892 Seconds???:1225296835
>Windows: 18:13:55:271
>Что по сути правильно, но только вот появились вопросы:
>1. Почему секунды не совпадают в tv.tv_sec?

в tv_sec хранится время с начала эпохи в секундах, с чем оно не совпадает?

>2. Почему не работает форматирование для %2.2d? Это можно исправить?

внимательным чтением документации, разберитесь что значат флаги ширины и точности для каждого типа поля (цифровое, с плавающей точкой, строка) в спецификаторах.
http://www.opennet.me/man.shtml?topic=printf&category=3&russ...
все работает если правильно применять спецификаторы и понимать как именно они влияют на выводимые значения.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

13. "Как получить время заданного форамата (+долисекунды) в С"  
Сообщение от Serega.M (ok) on 30-Окт-08, 20:13 
Чего вы такие напряжённые??? Я не собираюсь быть программиром С/С++, тем более в UNIX (хотя очень уважаю данную специфику и людей работающих в ней), так что самолёты из-за меня падать не будут. :) Для меня прежде всего важен конструктивный разговор и результат (имею ввиду на форуме), а все стандарты и т.п. в результате будут соблюдены.
Что же касается вас, то вы лично мне полезной инфы здесь написали два слова: man gettimeofday. Хотя я и до этого сам допёр.

Вот финальный результат моих изысканий:
#include <sys/time.h>
#include <stdio.h>

int main(void)
{
  char buffer[15];
  struct timeval tv;
  time_t curtime;

  gettimeofday(&tv, NULL);
  curtime=tv.tv_sec;
  strftime(buffer,15,"%H.%M.%S",localtime(&curtime));

  printf("\n%s.%02d\n",buffer,tv.tv_usec/10000);

  return 0;
}

Что-то ещё не устраивает в моём коде?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

14. "Как получить время заданного форамата (+долисекунды) в С"  
Сообщение от Keeper (??) on 30-Окт-08, 22:34 
>Что-то ещё не устраивает в моём коде?

Молодец. Пожалуйста, не обижайтесь на тех, кто пытался вам помочь написать хороший кусок кода.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

15. "Как получить время заданного форамата (+долисекунды) в С"  
Сообщение от Serega.M (ok) on 31-Окт-08, 11:04 
>>Что-то ещё не устраивает в моём коде?
>
>Молодец. Пожалуйста, не обижайтесь на тех, кто пытался вам помочь написать хороший
>кусок кода.

Спасибо. Я не обижаюсь, просто первый раз сталкиваюсь с таким уровнем мышления. ;)

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру