Asctime дать время


Содержание

Asctime дать время

Эта глава посвящен функциям работы со временем (прошедшем, текущим или вычисленным) и для вычислений, использующих время.

Файл time.h определяет три типа: clock_t и time_t оба служат для представления времени в удобном для произведения арифметических операций виде (В этой реализации величины типа clock_t имеют наивысшую точность, воэможную для данного компьютера, а точность величин типа time_t составляет одну секунду.), тип size_t определен для представления размеров.

В time.h также определяется структура tm для стандартного представления времени по грегорианскому календарю как цепочки чисел со следующими полями: tm_sec

День недели: число дней с воскpесенья.

Число дней, пpошедших с пеpвого янваpя.

Флаг летнего вpемени: положительное значение означает, что действyет летнее вpемя, нyлевое — что оно не действyет, отpицательное — что данных об этом нет.

_asctime_r является повторно входимой версией функции asctime.

Дополнительный аргумент reent — указатель на структуру, содержащую информацию для обеспечения повторной входимости.

Возвращается yказатель на строку, содержащую отформатированное значение timestamp.

Стандарт ANSI требует наличия функции asctime.

asctime не требует никаких процедур ОС.

Выдается общее количество процессорного времени, прошедшего с момента начала выполнения программы в единицах, определенных машинно-зависимым макро CLOCKS_PER_SEC. Если такое измерение провести нельзя, то выдается -1.

Стандарт ANSI требует наличия функции clock и макро CLOCKS_PER_SEC.

Требуется процедура ОС: times.

Возвращается yказатель на строку, содержащую отформатированное значение timestamp.

Стандарт ANSI требует наличия функции ctime.

ctime не требует никаких процедур ОС.

Выдается pазница (в секундах) между tim2 и tim1, типа double.

Стандарт ANSI требует наличия функции difftime, и определяет, что pезyльтат должен выдаваться в секyндах во всех реализациях.

difftime не требует никаких процедур ОС.

gmtime создает традиционное представление времени в статической памяти, каждый вызов gmtime или localtime переписывает это представление, созданное какой-либо из этих функций.

Возвращается указатель на традиционное представление времени (struct tm).

Стандарт ANSI требует наличия функции gmtime.


gmtime не требует никаких процедур ОС.

localtime создает традиционное представление времени в статической памяти, каждый вызов gmtime или localtime переписывает это представление, созданное какой-либо из этих функций.

mktime — обратная к localtime функция.

Возвращается yказатель на традиционное представление времени (struct tm).

Стандарт ANSI требует наличия функции localtime.

localtime не требует никаких процедур ОС.

localtime — функция, обратная к mktime.

Если содержимое структуры в timp не является правильным представлением календарного времени, то выдается -1. В противном случае выдается время преобразованное в значение time_t.

Стандарт ANSI требует наличия функции mktime.

mktime не требует никаких процедур ОС.

Для управления форматированием вывода используется строка в format. *format может содержать два типа спецификаций: текст для прямого копирования в форматируемую строку и спецификации преобразования времени. Спецификации преобразования времени состоят из последовательностей из двух знаков, начинающихся с % (%% включает знак процента в вывод). Каждая определенная спецификация преобразования выбирает поле в календарного времени, записанного в *timp, и преобразовывает его в строку одним из следующих способов: %a

Сокращение для дня недели.

Полное имя для дня недели.

Сокращение для названия месяца.

Полное имя месяца.

Строка, представляющая полную дату и время в виде Mon Apr 01 13:13:13 1992

День месяца, представленный двумя цифрами.

Час (на 24-часовых часах), представленный двумя цифрами.

Час (на 12-часовых часах), представленный двумя цифрами.

Число дней в году, представленное тремя цифрами (от 001 до 366).

Номер месяца, представленный двумя цифрами.

Минута, представленная двумя цифрами.

Секунда, представленная двумя цифрами.

Номер недели, представленный двумя цифрами (от 00 до 53; первая неделя считается начавшейся в первое воскресенье года). Смотрите также %w.


День недели, представленный одной цифрой, воскресенье -нулем.

Другая версия номера недели: как %u, но считая первую неделю с первого понедельника года.

o %x Строка, полностью представляющая дату в формате Mon Apr 01 1992

Строка, представляющая полное время дня (часы, минуты и секунды) в формате 13:13:13

Последние две цифры года.

Полный год, фоpматиpованный в четыpе цифpы.

Определенно в ANSI C для выделения временного промежутка, если это возможно; в данной реализации это отсутствует (%z допускается, но по нему ничего не выводится).

Если отформатированное время занимает не более чем maxsize знаков, то выдается длина отформатированной строки. В противном случае, если форматирование было прекращено из-за нехватки места, то выдается 0 0 и строка, начинающаяся в s, соответствует тем частям *format, которые могут быть полностью представлены в пределе maxsize знаков.

Стандарт ANSI требует наличия функции strftime, но не определяет содержимое *s, если отформатированная строка занимает больше чем maxsize знаков.

strftime не требует никаких процедур ОС.

Возвращаемая -1 означает, что текущее время недоступно; в противном случае результат представляет текущее время.

Стандарт ANSI требует наличия функции time.

В некотоpых pеализациях тpебyется пpоцедypа ОС gettimeofday.

Описание функций языка Си

All | _ | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z

asctime – представление локального (местного) времени в виде текстовой строки

char *asctime (const struct tm *m_time);

m_time – указатель на структуру содержащую локальное (местное) время и дату.

Указатель на текстовую строку с датой и временем.

Функция asctime () преобразует локальное (местное) время представленное в виде структуры типа struct tm, на которую указывает аргумент m_time в текстовую строку. Результат преобразования возвращается функцией в виде указатель на строку содержащую дату и время.

Преобразованная строка имеет вид: «Нед. Мес. Ден. Час:Mин:Сек Год\n\0», где:

Нед – день недель (3 символа),
Мес – название месяца (3 символа),
Ден – число (2 символа),
Час – часы (2 символа),
Мин – минуты (2 символа),
Сек – секунды (2 символа),
Год – Год (4 символа).

Структура tm содержит элементы:

int tm_sec – секунды (отсчет с 0);
int tm_min – минуты (отсчет с 0);
int tm_hour — часы (отсчет с 0);
int tm_mday — день месяца (отсчет с 1);
int tm_mon — месяц (отсчет с 0);
int tm_year – год;
int tm_wday — день недели (воскресенье — 0);
int tm_yday — день в году (отсчет с 0);
int tm_isdst — признак «летнее время» (больше нуля если «летнее время», ноль если «зимнее время», меньше нуля если нет информации.


Внимание! Не рекомендуется использовать функцию asctime () в многопоточных приложениях, так как данные функции использует общий буфер для сохранения преобразованного времени и одновременный вызов функции из разных потоков может привести к неверному результату работы. Для работы в многопоточных приложениях используйте функцию asctime _r().

В примере определяется текущее системное время в секундах, преобразуется в локальное время (с учетом часового пояса) с помощью функции localtime, затем локальное время преобразуется в текстовую строку с помощью функции asctime и результат выводится в консоль.

Илон Маск рекомендует:  strtolower - Преобразует строку в нижний регистр

Функции работы с датой и временем

Для работы с системной датой и временем используется библиотека time.h .

Типы, определенные в библиотеке time.h

Тип Описание
size_t Целочисленный тип, возвращаемый операцией sizeof .
clock_t Арифметический тип, подходящий для представления времени.
time_t Арифметический тип, подходящий для представления времени.
struct tm Структурный тип, содержащий компоненты календарного времени.

Для определения текущего календарного времени используется функция

Данная функция возвращает время в секундах начиная с 1 января 1970 г.

Структура tm имеет вид

преобразует календарное время, указанное ptm , сохраняет его в структуре tm и возвращает указатель на нее.

осуществляет обратное преобразование.

Если время не доступно или не может быть представлено, возвращает (clock_t) (-1) .

копирует строку fmt в строку s , заменяя спецификаторы формата в fmt соответствующими данными, взятыми из содержимого структуры времени, на которое указывает tmpt ; в строку s помещается не более max символов.

Функция возвращает количество символов (исключая нулевой) в результирующей строке. Если результирующая строка (включая нулевой символ) содержит больше, чем 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 Наименование часового пояса (если доступно)
%% % (то есть знак процента).

Функция, позволяющая вывести день недели на русском языке

Добавление нескольких дней к текущему времени

Рассмотрим еще один пример. Допустим, требуется добавить несколько дней к текущей дате.
Реализация на Си

Как узнать текущее время и текущую дату системы — C++

Как узнать время и дату системы в C++ не прибегая к WINAPI? P. S. Пожалуйста извините, что нету кода)

3 ответа 3

Если перевести в нормальные показания :) — применить к полученному от time() времени localtime()

Всё ещё ищете ответ? Посмотрите другие вопросы с метками c++ или задайте свой вопрос.

Похожие


Подписаться на ленту

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

дизайн сайта / логотип © 2020 Stack Exchange Inc; пользовательское содержимое попадает под действие лицензии cc by-sa 4.0 с указанием ссылки на источник. rev 2020.11.11.35402

Текущие время и дата

В посте про случайные числа рассматривалась функция стандартной библиотеки Си time() . Напомню, что, будучи вызванной с параметром NULL, она возвращает число секунд, прошедших с 01.01.1970. Это — дата основания операционной системы UNIX. Или по крайней мере так принято считать.

Возникает резонный вопрос. Можно ли использовать функцию time() в мирных целях, т.е. для извлечения текущей даты и времени (собственно по ее прямому назначению)?

Смелый программист скажет, что информации о количестве секунд вполне достаточно и минут за 15 изобретет велосипед.

На самом деле все несравненно проще, и в стандартной библиотеке предусмотрено все необходимое для быстрого и счастливого решения нашей задачи.

В частности, функция localtime() преобразует число секунд типа t_time в структуру типа tm , в которой в качестве полей содержатся целочисленные (int) значения секунд, минут, часа, дня, месяца и года (начиная от 1900, т.е. для 2009 года это будет число 109).

tm* localtime(const time_t* timer);

Можно оперировать значениями полей структуры напрямую, но для этого придумана функция asctime() , преобразующая все это дело к читабельному виду типа char* .

char* asctime(const struct tm* timeptr);

using namespace std;

int main ()
<
time_t seconds = time(NULL);
tm* timeinfo = localtime(&seconds);
cout cin.get();
return 0;
>

Теперь немного расширим нашу задачу. Пусть нам требуется создать свой собственный формат строки времени, отличный от того, который предоставляет нам функция asctime() .

Приведенная выше программа выводит результат в виде

день_недели месяц день_месяца часы:минуты:секунды год

А мы, к примеру, хотим, чтобы год у нас выводился не последним, а после даты, да еще чтобы это все было разделено запятыми. И название дня недели пусть выводится полное, а не сокращенное.

Тут нам на помощь приходит функция strftime() , представляющая собой квинтэссенцию злого низкоуровневого стиля Си.

size_t strftime (char* ptr, size_t maxsize, const char* format, const tm* timeptr);

Если вкратце, функция формирует по адресу указателя ptr массив символов на основании строки формата, указанной в format , беря численные значения из структуры, на которую указывает указатель timeptr , при этом следя, чтобы уложиться в отведенные для этого maxsize символов. Этот-то итоговый массив символов по адресу ptr и является искомой форматированной строкой даты-времени.

В принципе, пояснений требует только строка формата. Она представляет собой обычную Си-строку, напичканную спецификаторами формата, полный список которых можно оценить здесь. Там же можно насладиться описанием особенностей использования функции strftime() .

Нам понадобятся следующие спецификаторы:

%A — полное название дня недели
%B — полное название месяца
%d — день месяца
%Y — год в виде 4 цифр
%H — час в 24-часовом формате
%M — минуты
%S — секунды

Наша строка (с учетом запятых) примет следующий вид:


Настало время для полноценного примера.

using namespace std;

int main()
<
char buffer[80];
time_t seconds = time(NULL);
tm* timeinfo = localtime(&seconds);
char* format = «%A, %B %d, %Y %I:%M:%S»;
strftime(buffer, 80, format, timeinfo);
cout
cin.get();
return 0;
>

Кстати, если вы вставите в код до вызова функции strftime() строку

то вас ждет приятный сюрприз. Объяснение ему — в определении локали, с которым можно ознакомиться здесь.

6.1.3.1. Простое форматирование времени: asctime() и ctime()

Похожие главы из других книг

1.6.13. Правило экономии: время программиста стоит дорого; поэтому экономия его времени более приоритетна по сравнению с экономией машинного времени

1.6.13. Правило экономии: время программиста стоит дорого; поэтому экономия его времени более приоритетна по сравнению с экономией машинного времени «В ранние мини-компьютерные времена Unix» вынесенная в заголовок идея была довольно радикальной (машины тогда работали

Класс CTime – дата и время

Класс CTime – дата и время Для работы с календарными датами и временем в состав библиотеки классов MFC включен класс CTime. Класс основан на элементе типа time_t, в котором будет храниться дата и время. Элемент типа time_t объявлен как private, поэтому вы не можете обращаться

1.6.13. Правило экономии: время программиста стоит дорого; поэтому экономия его времени более приоритетна по сравнению с экономией машинного времени

1.6.13. Правило экономии: время программиста стоит дорого; поэтому экономия его времени более приоритетна по сравнению с экономией машинного времени «В ранние мини-компьютерные времена Unix» вынесенная в заголовок идея была довольно радикальной (машины тогда работали

Пример: простое управление задачами

Пример: простое управление задачами Оболочки UNIX предоставляют команды, позволяющие выполнять процессы в фоновом режиме и получать их текущее состояние. В этом разделе разрабатывается простой «процессор задач» («job shell») с аналогичным набором команд, перечень которых

7.21. Форматирование и печать даты и времени

7.21. Форматирование и печать даты и времени Для получения канонического представления даты и времени служит метод asctime; У него есть синоним ctime.Аналогичный результат дает метод to_s. Точно такая же строка будет напечатана, если просто передать объект, представляющий дату и

Asctime дать время

char *asctime(const struct tm *tm);
char *asctime_r(const struct tm *tm, char *buf);
char *ctime(const time_t *timep);
char *ctime_r(const time_t *timep, char *buf);
struct tm *gmtime(const time_t *timep);
struct tm *gmtime_r(const time_t *timep, struct tm *result);
struct tm *localtime(const time_t *timep);
struct tm *localtime_r(const time_t *timep, struct tm *result);
time_t mktime(struct tm *tm);

Требования макроса тестирования свойств для glibc (см. feature_test_macros(7)):

_POSIX_C_SOURCE >= 1 || _XOPEN_SOURCE || _BSD_SOURCE || _SVID_SOURCE || _POSIX_SOURCE

ОПИСАНИЕ

Функции asctime() и mktime() используют в качестве аргумента время, которое разделено на компоненты: год, месяц, день и т. п.


Время в виде компонент хранится в структуре tm, которая определена в файле следующим образом:

Члены структуры tm:

tm_sec Количество секунд до целой минуты, обычно в диапазоне от 0 до 59; но для того, чтобы установить високосную секунду, используются числа до 60. tm_min Количество минут до целого часа, от 0 до 59. tm_hour Количество часов прошедших после полуночи, от 0 до 23. tm_mday День месяца, от 1 до 31. tm_mon Количество месяцев, прошедших с января, от 0 до 11. tm_year Количество лет, прошедших с 1900 года. tm_wday Количество дней, прошедших с воскресенья, от 0 до 6. tm_yday Количество дней, прошедших с 1 января, от 0 до 365. tm_isdst Этот флаг показывает, учтено ли летнее время в описываемой дате. Значение флага положительно, если летнее время учитывается, 0, если нет, и отрицательно, если информация недоступна.

Вызов ctime(t) эквивалентен asctime(localtime(t)). Он преобразует календарное время t в строку (с null в конце) вида

«Wed Jun 30 21:49:08 1993\n»

Аббревиатуры дней недели: «Sun», «Mon», «Tue», «Wed», «Thu», «Fri» и «Sat». Аббревиатуры месяцев: «Jan», «Feb», «Mar», «Apr», «May», «Jun», «Jul», «Aug», «Sep», «Oct», «Nov» и «Dec». Возвращаемое значение указывает на статически размещённую строку, которая может быть перезаписана последующими вызовами любых функций даты и времени. Функция также устанавливает в внешних переменных tzname, timezone и daylight (смотрите tzset(3)) текущий часовой пояс. Реентерабельная версия ctime_r() делает то же самое, но заносит строку в буфер, предоставляемый пользователем. Длина буфера должна быть не менее 26 байт. Ей не нужно устанавливать tzname, timezone и daylight.

Функция gmtime() преобразует календарное время timep в компонентное представление, выраженное в виде всеобщего скоординированного времени (UTC). Она может вернуть значение NULL, если год не может быть описан типом integer. Возвращаемое значение указывает на статически выделенную структуру, содержимое которой может быть перезаписано последующими вызовами любых функций, работающих с датой и временем. Функция gmtime_r() делает то же самое, но помещает данные в структуру, предоставленную пользователем.

Функция localtime() преобразует календарное время timep в компонентное представление, выраженное относительно часового пояса, заданного пользователем. Функция работает так, как-будто она вызывает tzset(3), и устанавливает внешние переменные: tzname в значение текущего часового пояса, timezone в значение разницы в секундах между всеобщим скоординированным временем (UTC) и локальным стандартом времени, и daylight в ненулевое значение, если действуют стандартные правила летнего времени. Возвращаемое значение указывает на статически выделенную структуру, содержимое которой может быть перезаписано последующими вызовами любых функций, работающих с датой и временем. Функция localtime_r() делает то же самое, но помещает данные в структуру, предоставленную пользователем. Она не нуждается в установке tzname, timezone и daylight.

Функция asctime() преобразует компонентное значение времени tm в строку (с null в конце) того же формата, что и функция ctime(). Возвращаемое значение указывает на статическую строку, которая может быть перезаписана последовательностью вызовов любых функций даты и времени. Функция asctime_r() делает то же самое, но заносит строку в буфер, предоставленный пользователем. Длина буфера должна быть не менее 26 байт.

Функция mktime() преобразует компонентное структурированное значение локального времени в календарное представление. Функция игнорирует содержимое полей структуры tm_wday и tm_yday, заданные вызывающим. Значение, указанное в поле tm_isdst, информирует mktime() о действии летнего время (DST) в времени в структуре tm: положительно значение показывает, что действует; 0 означает, что не действует и отрицательное значение означает, что mktime() должна попытаться определить самостоятельно, действует ли летнее время (используя информацию о часовом поясе и базы данных системы).

Функция mktime() изменяет поля структуры tm следующим образом: в tm_wday и tm_yday записываются значения, определённые на основе содержимого других полей; если члены структуры вне своих допустимых интервалов, то они будут нормализованы (так, например, 40 октября превращается в 9 ноября); в tm_isdst записывается положительное значение или 0, соответственно, для указания действия летнего времени (независимо от его начального значения). Вызов mktime() также присваивает внешней переменной tzname значение текущего часового пояса.

Если компонентное значение времени не может быть представлено как календарное (число секунд с начала эпохи), то mktime() возвращает значение (time_t) -1 и не изменяет значения полей структуры компонентного значения времени.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

АТРИБУТЫ

Описание терминов данного раздела смотрите в attributes(7).

Интерфейс Атрибут Значение
asctime() безвредность в нитях небезопасно (MT-Unsafe race:asctime locale)
asctime_r() безвредность в нитях безвредно (MT-Safe locale)
ctime() безвредность в нитях MT-Unsafe race:tmbuf
race:asctime env locale
ctime_r(), gmtime_r(), localtime_r(), mktime() безвредность в нитях безвредно (MT-Safe env locale)
gmtime(), localtime() безвредность в нитях небезопасно (MT-Unsafe race:tmbuf env locale)

СООТВЕТСТВИЕ СТАНДАРТАМ

ЗАМЕЧАНИЯ

В POSIX.1-2001 сказано: «Функции asctime(), ctime(), gmtime() и localtime() должны возвращать значения в одном из двух статических объектов: структуре компонентного значения времени и массиве типа char. Выполнение любой функции может перезаписать данные, возвращённые ранее любой другой функцией в любом из этих объектов.» Это может происходить в реализации glibc.

Во многих реализациях, включая glibc, 0 в tm_mday означает последний день предыдущего месяца.

Структура struct tm версии glibc имеет дополнительные поля

определяемые в случае, если макрос _BSD_SOURCE был определён до включения . Это расширение BSD, существует в 4.3BSD-Reno.

Согласно POSIX.1-2004, для localtime() требуется повторить поведение как если бы была вызвана tzset(3), хотя для localtime_r() такого требования не выдвигается. В целях переносимости в коде нужно вызывать tzset(3) перед localtime_r().

Python time mktime() Method

Description


Pythom time method mktime() is the inverse function of localtime(). Its argument is the struct_time or full 9-tuple and it returns a floating point number, for compatibility with time().

If the input value cannot be represented as a valid time, either OverflowError or ValueError will be raised.

Syntax

Following is the syntax for mktime() method −

Parameters

t − This is the struct_time or full 9-tuple.

Return Value

This method returns a floating point number, for compatibility with time().

Example

The following example shows the usage of mktime() method.

When we run above program, it produces following result −

Asctime дать время

Заголовочный файл объявляет типы и функции, связанные с датой и временем. Некоторые функции имеют дело с местным временем, которое может отличаться от календарного, например в связи с зонированием времени. Типы clосk_t и time_t — арифметические типы для представления времени, a struct tm содержит компоненты календарного времени:

секунды от начала минуты (0, 59);

минуты от начала часа (0, 59);

часы от полуночи (0, 23);

число месяца (1,31);

месяцы с января(0,11);

годы с 1900;

дни с воскресенья (0, 6);

дни с 1 января (0, 365);

признак летнего времени.

int tm_sec;
int tm_min;
int tm_hour;
int tm_mday;
int tm_mon;
int tm_year;
int tm_wday;
int tm_yday;
int tm_isdst;

Значение tm_isdst — положительное, если время приходится на сезон, когда время суток сдвинуто на 1 час вперед, нуль в противном случае и отрицательное, если информация не доступна.


clock возвращает время, фиксируемое процессором от начала выполнения программы, или –1, если оно не известно. Для выражения этого времени в секундах применяется формула clock()/CLOCKS_PER_SEC.

time возвращает текущее календарное время (т.е. время, прошедшее после определенной даты, — обычно после 0 ч 00 мин 00 с GMT 1-го января 1970 г.) или –1, если время не известно. Если tp не равно NULL, то возвращаемое значение записывается и в *tp.

difftime возвращает разность time2 – time1, выраженную в секундах.

mktime преобразует местное время, заданное структурой *tp, в календарное, выдавая его в том же виде, что и функция time. Компоненты будут иметь значения в указанных диапазонах. Функция mktime возвращает календарное время или –1, если оно не представимо.

Следующие четыре функции возвращают указатели на статические объекты, каждый из которых может быть изменен другими вызовами.

asctime переводит время в структуре *tp в строку вида

ctime переводит календарное время в местное, что эквивалентно выполнению

gmtime переводит календарное время во Всемирное координированное время (Coordinated Universal Time — UTC). Выдает NULL , если UTC не известно. Имя этой функции, gmtime, происходит от Greenwich Mean Time (среднее время по Гринвичскому меридиану).

localtime переводит календарное время *tp в местное.

strftime форматирует информацию о дате и времени из *tp в строку s согласно формату fmt, который имеет много общих черт с форматом, задаваемым в функции printf. Обычные символы (включая и завершающий символ '\0') копируются в s. Каждая пара, состоящая из % и буквы, заменяется, как показано ниже, с использованием значений по форме, соответствующей местным традициям. В s размещается не более smax символов; strftime возвращает число символов без учета '\0' или нуль, если число сгенерированных символов больше smax.

mktime - Возвращает метку времени Unix для заданной даты

(PHP 4, PHP 5, PHP 7)

mktime — Возвращает метку времени Unix для заданной даты

Описание

Функция возвращает метку времени Unix, соответствующую дате и времени, заданным аргументами. Метка времени - это целое число, равное разнице в секундах между заданной датой/временем и началом Эпохи Unix (The Unix Epoch, 1 января 1970 00:00:00 GMT).

Аргументы могут быть опущены в порядке справа налево. В этом случае их значения по умолчанию равны соответствующим компонентам локальной даты/времени.

Примечания

Начиная с версии PHP 5.1, если mktime() вызывается без аргументов, то будет сгенерировано замечание уровня E_STRICT . Используйте вместо этого функцию time() .

Список параметров

Количество часов, прошедших с начала дня, указанного параметрами month , day и year . Отрицательные значения определяют часы до полуночи указанного дня. Значения большие 23 определяют соответствующий час следующего дня (или дней).

Количество минут, прошедших от начала часа, указанного параметром hour . Отрицательные значения определяют минуты предыдущего часа. Значения большие 59 определяют соответствующие минуты следующего часа (или часов).

Количество секунд, прошедших от начала минуты, указанной параметром minute . Отрицательные значения определяют секунды из предыдущей минуты. Значения большие 59 определяют соответствующие секунды следующей минуты (или минут).

Количество месяцев, прошедших с конца предыдущего года. Значения от 1 до 12 определяют нормальные обычные календарные месяцы года. Значения меньшие 1 (включая отрицательные значения) определяют месяца предыдущего года в обратном порядке, т.е. 0 будет декабрем, -1 - ноябрем и т.д. Значения больше 12 определяют соответствующий месяц в следующем году (или годах).

Количество дней, прошедших с конца предыдущего месяца. Значения от 1 до 28, 29, 30 или 31 (в зависимости от месяца) определяют нормальные дни соответствующего месяца. Значения меньшие 1 (включая отрицательные значения) определяют дни предыдущего месяца, таким образом, 0 является последним днем предыдущего месяца, -1 - предпоследним днем предыдущего месяца и т.д. Значения большие количества дней соответствующего месяца определяют соответствующий день следующего месяца (или месяцев).


Номер года, может быть указан двумя или четырьмя цифрами, причем значения между 0-69 будут трактованы как 2000-2069, а между 70-100 - как 1970-2000. На тех системах, где time_t является 32-битным знаковым целым (наиболее распространенный вариант на сегодня), корректный диапазон для параметра year содержит даты где-то между 1901 и 2038. Однако, до версии PHP 5.1.0, на некоторых системах этот диапазон был ограничен датами между 1970 и 2038 (например, Windows).

Данный параметр может быть установлен в 1, если заданной дате соответствует летнее время (DST), 0 в противном случае, или -1 (значение по умолчанию), если неизвестно, действует ли летнее время на заданную дату. В последнем случае PHP пытается определить это самостоятельно. Это можно привести к неожиданному результату (который, тем не менее, не будет неверным). Некоторые даты могут быть неверными, если летнее время применимо к системе, на которой запущен PHP, или параметр is_dst установлен в 1. Если переход на летнее время происходит, например, в 2:00, все даты между 2:00 и 3:00 станут некорректными и mktime() вернет неопределенное (обычно отрицательное) значение. Некоторые системы (например, Solaris 8) осуществляют переход на летнее время в полночь, так что время 0:30 дня, когда был осуществлен переход на летнее время будет обрабатываться как 23:30 предыдущего дня.

Начиная с версии PHP 5.1.0 этот параметр более не рекомендуется к использованию. Вместо этого рекомендуется устанавливать соответствующую временную зону.

Возвращаемые значения

mktime() возвращает временную метку Unix в соответствии с переданными аргументами. Если были переданы некорректными аргументы, функция вернет FALSE (до версии PHP 5.1 возвращалась -1).

Ошибки

Каждый вызов к функциям даты/времени при неправильных настройках временной зоны сгенерирует ошибку уровня E_NOTICE , и/или ошибку уровня E_STRICT или E_WARNING при использовании системных настроек или переменной окружения TZ . Смотрите также date_default_timezone_set()

Список изменений

Теперь ошибки, связанные с временными зонами, генерируют ошибки уровня E_STRICT и E_NOTICE .

Примеры

Пример #1 Пример использования функции mktime()

// Устанавливаем используемую по умолчанию временную зону. Доступно, начиная с версии PHP 5.1
date_default_timezone_set ( 'UTC' );

// Выводит: July 1, 2000 is on a Saturday
echo "July 1, 2000 is on a " . date ( "l" , mktime ( 0 , 0 , 0 , 7 , 1 , 2000 ));

// Выводит что-то вроде: 2006-04-05T01:02:03+00:00
echo date ( 'c' , mktime ( 1 , 2 , 3 , 4 , 5 , 2006 ));
?>

Пример #2 mktime() example

Функцию mktime() удобно использовать для выполнения арифметических операций с датами, так как она вычисляет верные значения при некорректных аргументах. Например, в следующем примере каждая строка выведет "Jan-01-1998".

Пример #3 Последний день месяца

Последний день любого месяца можно вычислить как "нулевой" день следующего месяца, не -1 день. Оба приведенных ниже примера выведут "Последний день февраля 2000 г.: 29".

Примечания

До версии PHP 5.1.0, отрицательные временные метки не поддерживались ни под одной известной версией Windows, а также и некоторыми другими системами. Таким образом, диапазон корректных лет был ограничен датами от 1970 до 2038 г.

Смотрите также

  • checkdate() - Проверяет корректность даты по григорианскому календарю
  • gmmktime() - Возвращает метку времени Unix для времени по Гринвичу
  • date() - Форматирует вывод системной даты/времени
  • time() - Возвращает текущую метку времени Unix
Илон Маск рекомендует:  DateSeparator - Переменная Delphi
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL
Версия Описание
5.3.0 mktime() теперь выбрасывает ошибку уровня E_DEPRECATED при использовании параметра is_dst .
5.1.0 Параметр is_dst теперь считается устаревшим. Функция теперь возвращает FALSE при ошибке, тогда как раньше возвращалась -1. Теперь функция принимает дату с одновременно установленными в ноль годом, месяцем и днем.
5.1.0 Если mktime() была вызвана без аргументов, то будет сгенерировано замечание уровня E_STRICT . Используйте вместо этого функцию time() .
5.1.0