Time null что возвращает
Функции работы с датой и временем
Типы, определенные в библиотеке time.h
Для определения текущего календарного времени используется функция
Данная функция возвращает время в секундах начиная с 1 января 1970 г.
Структура tm имеет вид
осуществляет обратное преобразование.
Функция возвращает количество символов (исключая нулевой) в результирующей строке. Если результирующая строка (включая нулевой символ) содержит больше, чем max символов, функция возвращает 0, а содержимое s не определено.
Спец. | Назначение |
%a | Локальное сокращенное название дня недели |
%A | Локальное полное название дня недели |
%b | Локальное сокращенное название месяца |
%B | Локальное полное название месяца |
%c | Локальный разделитель даты и времени |
%d | День месяца в виде десятичного числа (01-31) |
%D | Эквивалент %m%d%y |
%e | День месяца (десятичное число): однозначные числа дополнены пробелом |
%F | Эквивалент %Y-%m-%d |
%g | Последние два разряда года (00-99) |
%G | Год в виде десятичного числа |
%H | Часы (по 24-часовой шкале) в виде десятичного числа (00-23) |
%I | Часы (по 12-часовой шкале) в виде десятичного числа (01-12) |
%j | День года в виде десятичного числа (001-366) |
%m | Месяц в виде десятичного числа (01-12) |
%n | Символ новой строки |
%M | Минуты в виде десятичного числа (00-59) |
%p | Локальный эквивалент a.m./p.m. для 12-часовой временной шкалы |
%r | Локальное 12-часовое время |
%R | Эквивалент %H:%M |
%S | Секунды в виде десятичного числа (00-61) |
%t | Символ горизонтальной табуляции |
%T | Эквивалент %H:%M:%S |
%u | Номер дня недели (1-7), где 1 соответствует понедельнику |
%U | Номер недели в году, считая воскресенье первым днем недели (00-53) |
%w | Номер дня недели в виде десятичного числа, начиная с воскресенья (0-6) |
%W | Номер недели в году, считая понедельник первым днем недели (00-53) |
%y | Год без века в виде десятичного числа (00-99) |
%Y | Год с веком в виде десятичного числа |
%z | Смещение от UTC («-800» означает на 8 ч по Гринвичу западнее). |
%Z | Наименование часового пояса (если доступно) |
%% | % (то есть знак процента). |
Функция, позволяющая вывести день недели на русском языке
Результат выполнения
Добавление нескольких дней к текущему времени
Рассмотрим еще один пример. Допустим, требуется добавить несколько дней к текущей дате.
Реализация на Си
Реализация функции задержки
Комментариев к записи: 17
#define _CRT_SECURE_NO_WARNINGS
#include
#include
#define ADD_DAYS 300
#define BUFF_SIZE 40
Текущее время
пункт2: Вводится дата (день, месяц, год). Определить порядковый номер дня в году.
Не особо понимаю, что делать((
Выводить текущее время в определенные позиции консоли во время работы
Портирую консольное приложение. Есть код, который работал после компиляции в BC++ 3.1, после.
Получить текущее время
Столкнулся с такой проблемой. Нужно преобразовать результат, который возвращает time(0), в часы.
Вывести текущее время в формате ЧЧ:ММ:СС
я хочу из time(0), получить время (ЧЧ:ММ:СС). что я делаю не так? или есть более лёгкий способ его.
Текущее время с точностью до миллисекунд
Здравствуйте! Столкнулся со следующей проблемой. Нужно узнать текущее время с точностью до.
Все просто.
Вызываешь функцию time();
ее результат засовываешь в функцию localtime()
из ее результата делаешь строку функцией strftime()
она похожа на printf(), только флаги другие. Форматирует время как угодно.
Пункт второй.
все просто. Определяешь сколько дней в каждом месяце. Складываешь дни и количество дней в каждом из месяцев.
И не забудь про высокосные годы.
Получится что-то типа:
или я не так их использую?
Добавлено через 6 минут
или может сделать так
Текущее время в секундах. Очень нужно
На форуме очень много тем со временем, но есть проблема кода я пользуюсь функцией ctime, то у меня.
Как получить текущее время в формате чч:мм:сс
Подскажите, есть необходимость получить текущее время в формате чч:мм:сс, как это реализовать?
srand (time (null)) вызывает предупреждение компилятора: неявное преобразование теряет целочисленную точность
Извиняюсь, если на этот вопрос уже дан ответ.
msgstr «неявное преобразование теряет целочисленную точность:» time_t «(он же» long «) в» unsigned int «»
Это сообщение об ошибке, которое я получаю, когда я выполняю код выше. Я использую XCode 4.6.1. Теперь, когда я использую другой компилятор, такой как тот, что на codepad.org, он прекрасно работает, генерируя то, что кажется случайными числами, поэтому я предполагаю, что это проблема xcode, которую мне нужно обойти?
Я только начал программировать, поэтому я начинающий, когда дело доходит до этого. Есть ли проблема с моим кодом или мой компилятор?
Любая помощь будет оценена!
Решение
msgstr «неявное преобразование теряет целочисленную точность:» time_t «(он же» long «) в» unsigned int «»
Вы теряете точность неявно, потому что time() возвращает long который больше чем unsigned int на вашей цели. Чтобы обойти эту проблему, вы должны явно привести результат (таким образом, удаляя «неявную потерю точности»):
Учитывая, что сейчас 2017 год, я редактирую этот вопрос, чтобы предложить вам рассмотреть функции, предоставляемые std::chrono::* определяется в как часть C ++ 11. Ваш любимый компилятор предоставляет C ++ 11? Если нет, то это действительно должно!
Чтобы узнать текущее время, вы должны использовать:
Почему я должен беспокоиться об этом, когда time() работает?
ИМО, достаточно одной причины: ясные, явные типы. Когда вы имеете дело с большими программами среди достаточно больших команд, знание того, представляют ли передаваемые значения временные интервалы или «абсолютные» времена, и какие величины являются критическими. С std::chrono Вы можете разрабатывать интерфейсы и структуры данных, которые будут переносимыми и пропускают блюз «истек срок ожидания или миллисекунды от сейчас или ожидание было секунд».
Другие решения
Как уже упоминалось в «nio», чистый обходной путь — явное приведение типа.
Более глубокое объяснение:
Для srand () в качестве параметра требуется unsigned int ( srand(unsigned int) ) но time () возвращает длинное int ( long int time() ) и это не принимается srand (), поэтому, чтобы исправить это, компилятор должен просто преобразовать (преобразовать) long int в unsigned int.
НО в вашем случае компилятор предупреждает вас об этом (как полагали разработчики компилятора, вы должны знать, что это все).
srand( (unsigned int) time(NULL) );
(простите, если я сделал что-то не так, это мой первый ответ на stackoverflow)
Функция srand имеет тип unsigned int в качестве аргумента, time_t — тип long. верхние 4 байта из long удаляются, но в этом нет проблем.
srand рандомизирует алгоритм rand с 4 младшими байтами времени, поэтому вы предоставляете больше данных, чем необходимо.
если вы получили ошибку, попробуйте просто явно привести тип time_t к unsigned int:
Еще одна интересная вещь: если вы запустите свою программу дважды в одну и ту же секунду, вы получите одно и то же случайное число, которое иногда может быть нежелательным, потому что, если вы запустите алгоритм rand с одинаковыми данными, он сгенерирует одно и то же случайное число. последовательность. Или это может быть желательно, когда вы отлаживаете какой-то кусок кода и вам нужно снова протестировать то же поведение … тогда вы просто используете что-то вроде srand(123456)
Это не ошибка. Код действителен, и его значение четко определено; если компилятор отказывается компилировать его, он не соответствует определению языка. Скорее всего, это предупреждение, и он говорит вам, что автор компилятора думает, что вы, возможно, допустили ошибку. Если вы настаиваете на исключении предупреждающих сообщений, вы можете добавить актерский состав, как предлагали другие. Я не большой поклонник переписывания правильного, значимого кода, чтобы удовлетворить идею некоторых авторов о хорошем стиле; Я бы отключил предупреждение. Однако, если вы сделаете это, вы можете пропустить другие места, где конверсия теряет данные, которые вы не намеревались.
Русские Блоги
Функции времени, связанные с Linux
Эта статья предназначена для простого резюме временных функций, общих для системного программирования Linux. Давайте сначала посмотрим на несколько типов данных, а затем посмотрите, как преобразуются несколько временных форматов и суммируют соответствующие функции получения времени задержки времени и системы.
Тип времени
1.1 time_t
На самом деле, длинное целое число, представляет время UTC (0: 0AM 0:05 1 января 1970 года, время эпохи системы Linux) к текущей системе вторичной разницы во времени, обычно используется для временных функций:
Используя функцию Ctime (), мы можем преобразовать функцию времени добраться до времени и даты нашего привычного использования и вернуть его в строку.
Кроме того, если вы хотите сравнить разницу времени между двумя раз, вы можете использовать функцию Difftime ():
1.2 struct tm
Структура TM называется взорванным временем в стандарте ANSI. Из определения следующего мы также можем увидеть, что время разлагается в очень подробную область.
Функция функции MKTime () точно противоположная, и она преобразует структуру TM в Time_T тип времени.
Функция ASCTIME () представляет собой время и дату представления структуры TM в наше привычное использование и возвращается в строку.
1.3 struct timeval
Структура Timeval может получить время точности уровня MS, которая определяется следующим образом:
Функция, используемая структурой Timeval: GetTimeOfDay () и SettimeOfDay ():
1.4 struct timespec
Структура TimeSpec может обеспечить более высокие значения времени прецизионного времени, а уровень NS определяется следующим образом:
Соответствующая функция: clock_getime ():
Если CLK_ID используется для разработки соответствующего типа часов, могут использоваться разные типы для получения различных значений времени, с четырьмя видами:
2. Преобразование типа времени
2.1 Время преобразования типа
Введенные соответствующие функции времени и соответствующие функции обработки, давайте сделаем простой сводку различных типов времени, как показано ниже:
Большинство функций на рисунке были описаны в разделе 1, где две функции используются в структурных типах TM и пользователь, определенные в типе структуры TM и определенным пользователем. Convert между форматом отображения.
Функция STRFTIME () преобразует формат TM в формат формата и поместите его в главный адрес, а формат общего формата:
Функция STRPTIME () выполняет противоположную работу, преобразуйте функцию Rentime () обратно в формат структуры TM. Это определяется следующим образом:
2.2 Пример
После того, как рассказываю это, давайте пройдем простой пример:
3. Задержка функции и функции таймера
3.1 Функция сна
В пространстве пользователя Linux мы можем использовать семейство функции Sleep, чтобы добиться отложенных функций, следующие три функции сна обеспечивают три прецизионные задержки:
3.2 Функция задержки
В слое ядра Linux мы можем использовать семейство функции задержки для достижения различных функций времени точности:
3.3 Таймер Функция
Функции таймера, доступные в системе Linux, имеют много, такие как тревоги, выберите и многое другое. Этот раздел введет высокоточный таймер, который поставляется из стандарта POSIX. Так же, как нить, описанная выше, различные механизмы синхронизации, которые также имеют набор таких функций, как создание, удаление, съемку, настройка, все из которых включены в файл Time.h.
Создать таймер
(1). clockid_t: Используемые типы таймеров, в основном включают в себя:
среди них sigev_notify Говорят, что есть несколько способов:
2. Начать таймер
Для new_value it_value используется для указания времени истечения срока действия текущего таймера. Когда таймер истекает, значение iT_Value будет обновляться в значение iT_Interval. Если значение iT_Interval равно 0, таймер не является планировщиком пространства временного пространства, и после истечения истечения IT_Value, он вернется к состоянию SCASTAPT.
Иногда приложение запускает таймер с интервалом времени, затем измените интервал времени таймера, который может быть реализован путем изменения new_value; если приложение хочет понять интервал времени перед изменением набора временных интервалов, его передается NONULL OLL_VALUE POINTER, поэтому, когда return returs time_settime () red_value сохраняет последнюю настройку интервала времени таймера. В большинстве случаев нам это не нужно, вы можете просто установить Old_Value на NULL, игнорируйте его.
Флаги только 2: 0 и Timer_abStime. Когда флаги 0, new_value-> it_value означает, что время времени, когда таймер сначала истек (например, я надеюсь, что время 2 секунды через 2 секунды); когда флаги Timer_abStime, new_value-> it_value означает первое завершение абсолютного времени ( Например, когда таймер истекает в 01:23:45); если new_value-> it_value установите абсолютное время, чем текущее абсолютное время, то таймер истекает немедленно; если часы clock_realtime отрегулируются, первое время таймера скорректирован соответствующим образом.
3. Получите оставшееся время таймера
4. Количество превышающих ограничений для получения таймеров
Возможно, что таймер истекает, и сигнал, генерируемый в последнее время таймера, все еще находится в приостановленном состоянии. В этом случае один из сигналов может быть потерян. Это ограниченный по времени таймера. Программа может определить это переполнение количества исключений, вызывая Timer_GetoverRun. Оверксирующий таймер может происходить только на сигнале, генерируемом тем же таймером. Несколькими таймерами, даже те таймеры, которые используют те же часы и сигналы, сгенерированные сигналы будут очереде, не потерявшись.
6. Удалить таймер
3.4 Пример
Давайте посмотрим на примере использования таймера:
Примечание:
Написано в WEN: эта статья является основной запиской, договоренностью главы и содержание AUPUE. Есть упущения или неправильные места в тексте, пожалуйста, также просветите меня.
srand (time (NULL)) «Функция ‘srand’ не может быть решена.»
Я пытался отладить эту проблему некоторое время и, честно говоря, я просто не вижу, что я делаю неправильно.
Почему есть синтаксическая ошибка?
«Функция« srand »не может быть решена».
Как я решил проблему:
Это было связано с компилятором MinGW, который я использовал. Переход на Visual Studio решил проблему.
Решение
; в конце #include Директивы являются проблемой в вашем коде. #include Директивы не нуждаются (неправильно ставить) точки с запятой в конце, в отличие C++ заявления.
Кажется, любой персонаж после > в директиве вызывает эту ошибку / предупреждение.
РЕДАКТИРОВАТЬ:
Что касается вопроса компоновщика:
Вместо того, чтобы использовать stdlib.h попробуйте использовать попробуйте, если это поможет. Потому что он использует пространство имен.
РЕДАКТИРОВАТЬ:
Цитируется из этого вопроса:
Теперь я считаю, что это проблема анализа кода. Лучшее решение
отредактировать параметры анализа кода, чтобы сделать «Функция не может быть
решено «быть предупреждением, а не ошибкой. Таким образом, вы можете увидеть
предупреждения в представлении «Проблемы», но продолжают работать. Если функция
ДЕЙСТВИТЕЛЬНО отсутствует, компилятор скажет вам! У меня также есть новая теория,
что проблема с анализатором кода, следующим по символическим ссылкам, потому что
все «отсутствующие» функции находятся в символических включаемых файлах. Было бы
люблю любой вклад в эту теорию.
Надеюсь, что это указывает на решение проблемы.