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


Содержание

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

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

mktime – перевод календарного времени в UTC время в секундах.

#include
time_t mktime(struct tm *m_time);

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

UTC время в секундах, начиная с 0 часов 1 января 1970 года, если структура на которую указывает аргумент m_time содержит корректные данные, в противном случае возвращается -1.

Функция mktime () на основе данных содержащихся в структуре m_time (локального времени), рассчитывает UTC время в секундах, истекшее с 0 часов 1 января 1970 года, с учетом установленного в операционной системе часового пояса.

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

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

В примере, на основе вручную заполненной структуры типа tm рассчитывается UTC время в секундах и результат выводится в консоль.

C ++ — Дата и время

Стандартная библиотека C ++ не предоставляет правильный тип даты. C ++ наследует структуры и функции для обработки дат и времени из C. Чтобы получить доступ к функциям и структурам, связанным с датой и временем, вам нужно будет включить заголовочный файл в вашей программе на C ++.

Существует четыре типа времени: clock_t, time_t, size_t и tm . Типы — clock_t, size_t и time_t могут представлять системное время и дату как некоторое целое число.

Тип структуры tm содержит дату и время в виде структуры C, имеющей следующие элементы:

Ниже приведены важные функции, которые мы используем при работе с датой и временем на C или C ++. Все эти функции являются частью стандартной библиотеки C и C ++, и вы можете проверить их детали, используя ссылку на стандартную библиотеку C ++, приведенную ниже.

time_t time (time_t * time); Это возвращает текущее время календаря системы в количестве секунд, прошедших с 1 января 1970 года. Если система не имеет времени, возвращается .1.
char * ctime (const time_t * time); Это возвращает указатель на строку формы день месяц год: минуты: секунды год \ n \ 0 .
struct tm * localtime (const time_t * time); Это возвращает указатель на структуру tm, представляющую локальное время.
clock_t clock (void); Это возвращает значение, которое приблизительно соответствует времени, в течение которого вызываемая программа была запущена. Значение, равное .1, возвращается, если время недоступно.
char * asctime (const struct tm * time); Это возвращает указатель на строку, содержащую информацию, хранящуюся в структуре, на которую указывает время, преобразованное в форму: day month date hours: minutes: seconds year \ n \ 0
struct tm * gmtime (const time_t * time); Это возвращает указатель на время в виде структуры tm. Время представлено в скоординированном универсальном времени (UTC), которое по сути является средним временем по Гринвичу (GMT).
time_t mktime (struct tm * time); Это возвращает эквивалент календарного времени времени, найденного в структуре, на которую указывает время.
double difftime (time_t time2, time_t time1); Эта функция вычисляет разницу в секундах между временем 1 и временем 2.
size_t strftime (); Эта функция может использоваться для форматирования даты и времени в определенном формате.

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

Предположим, вы хотите получить текущую системную дату и время, либо в качестве локального времени, либо в качестве скоординированного универсального времени (UTC). Ниже приведен пример для достижения того же:

Когда приведенный выше код компилируется и выполняется, он производит следующий результат:

Формат времени с использованием struct tm

Структура tm очень важна при работе с датой и временем на C или C ++. Эта структура содержит дату и время в виде структуры C, как указано выше. Большинство функций, связанных со временем, используют структуру tm. Ниже приведен пример, который использует различные функции, связанные с датой и временем, и структуру tm —

При использовании структуры в этой главе я исхожу из предположения, что у вас есть базовое понимание структуры C и как получить доступ к членам структуры с помощью оператора arrow -> .

Когда приведенный выше код компилируется и выполняется, он производит следующий результат:

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

int checkdate (int month, int day, int year);

Возвращает true если данная дата правильна, иначе false. Проверяет правильность даты, заданной аргументами. Дата считается правильной, если:

год между 1900 и 32767 включительно

месяц между 1 и 12 включительно

день находится в диапазоне разрешенных дней данного месяца. Високосные годы учитываются.

Описание

string date (string format, int timestamp);

Возвращает строку, отформатированную согласно данной строке и используя данную временную метку или текущее локальное время, если не задана временная метка.

В фоматной строке должны использоваться следующие символы:

d — день месяца, цифровой, 2 цифры (на первом месте ноль)

D — день недели, текстовый, 3 буквы; т.е. «Fri»

F — месяц, текстовый, длинный; т.е. «January»

h — час, цифровой, 12-часовой формат

H — час, цифровой, 24-часовой формат

i — минуты, цифровой

j — день месяца, цифровой, без начальных нулей

l (строчная ‘L’) — день недели, текстовый, длинный; т.е. «Friday»

m — месяц, цифровой

M — месяц, текстовый, 3 буквы; т.е. «Jan»

s — секунды, цифровой

S — английский порядковый суффикс, текстовый, 2 символа; т.е. «th», «nd»

U — секунды с начала века

Y — год, цифровой, 4 цифры

w — день недели, цифровой, 0 означает воскресенье

y — год, цифровой, 2 цифры

z — день года, цифровой; т.е. «299»

Нераспознанные символы в форматной строке будут печататься как есть.

Пример 1. Пример date()

Функции date() и mktime() возможно использовать вместе для того, чтобы найти даты в будущем или прошлом.

Пример 2.Пример функций date() и mktime()

Для того, чтобы отформатировать даты на других языках, Вы должны использовать функции setlocale() и strftime()

strftime

Описание

string strftime (string format, int timestamp);


Возвращает строку, отформатированную согласно данной форматной строке и используя данную временную метку или текущее локальное время, если метка не задана. Названия месяцев и недель и другие, зависящие от языка строки, зависят от текущего locale, устанавливающегося с помощью setlocale() .

В форматной строке следует использовать следующие спецификаторы преобразований:

%a — сокращенное название дня недели согласно текущему locale

%A — полное название дня недели согласно текущему locale

%b — сокращенное название месяца согласно текущему locale

%B — полное название месяца согласно текущему locale

%c — предпочтительное представление даты и времени для текущего locale

%d — день месяца как десятичное число (в диапазоне от 0 до 31)

%H — час как десятичное число в 24-часовом формате (в диапазоне от 00 до 23)

%I — час как десятичное число в 12-часовом формате (в диапазоне от 01 до 12)

%j — день года как десятичное число (в диапазоне от 001 до 366)

%m — месяц как десятичное число (в диапазоне от 1 до 12)

%M — минуты как десятичное число

%p — `am’ или `pm’ согласно текущему времени, или соответствующие строки для текущего locale

%S — секунды как десятичное число

%U — номер недели текущего года как десятичное число, начиная с первого Воскресенья в качестве первого дня первой недели

%W — номер недели текущего года как десятичное число, ночиная с первого Понедельника в качестве первого дня первой недели

%w — день недели как целое число, Воскресенье — 0-й день

%x — предпочитаемое представление даты для текущего locale не включающее время

%X — предпочитаемое представление времени для текущего locale не включающее дату

%y — год как десятичное число без столетия (в диапазоне от 00 до 99)

%Y — год как десятичное число, включая столетие

%Z — временная зона или название или сокращение

%% — символ `%’

Пример 1. Пример функции strftime()

Пример будет работать, если у вас установлены соответствующие locale.

getdate

Описание

array getdate (int timestamp);

Возвращает ассоциативный массив, содержащий информацию о дате со следующими элементами:

«mday» — день месяца

«wday» — день недели, цифровой

«mon» — месяц, цифровой

«year» — год, цифровой

«yday» — день года, цифровой; т.е. «299»

«weekday» — день недели, текстовый, полный; т.е. «Friday»

«month» — месяц, текстовый, полный; т.е. «January»

gmdate

Описание

string gmdate (string format, int timestamp);

Аналогична функции date() за исключением того, что время возвращается в Гринвичском формате Greenwich Mean Time (GMT). Например, при запуске в Финляндии (GMT +0200), первая строка ниже напечатает «Jan 01 1998 00:00:00», в то время как вторая строка напечатает «Dec 31 1997 22:00:00».

Пример 1. пример gmdate()

mktime

Описание

int mktime (int hour, int minute, int second, int month, int day, int year);

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

Возвращает временную метку Unix согласно данным аргументам. Эта временная метка является целым числом, равным количеству секунд между эпохой Unix (1 Января 1970) и указанным временем.

Аргументы могут быть опущены с права налево; каждый опущенный таким образом аргумент будет установлен в текущую величину согласно локальной дате и времени.

MkTime is useful for doing date arithmetic and validation, as it MkTime полезена при арифметических дейтсвиях с датой и ее проверкой, она будет автоматически вычислять корректную величину для вешедших за границы параметров. Например, каждая из следующих строк возвращает строку «Jan-01-1998».

Пример 1. Пример mktime()

gmmktime

Описание

int gmmktime (int hour, int minute, int second, int month, int day, int year);

Идентична mktime() за исключением передаваемых параметров, представляющих дату в GMT.

Описание

Возвращает текущее время, измеренное в числе секунд с эпохи Unix (1 Января 1970 00:00:00 GMT).

microtime


Описание

string microtime (void);

Возвращает строку «msec sec» где sec текущее время, измеренное в числе секунд с эпохи Unix (0:00:00 1 Января, 1970 GMT), а msec — это часть в микросекундах. Эти функции доступны только в операционных системах, поддерживающих системный вызов gettimeofday().

Дата и время

Встречайте новый встроенный объект: Date. Он содержит дату и время, а также предоставляет методы управления ими.

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

Создание

Для создания нового объекта Date нужно вызвать конструктор new Date() с одним из следующих аргументов:

Без аргументов – создать объект Date с текущими датой и временем:

Создать объект Date с временем, равным количеству миллисекунд (тысячная доля секунды), прошедших с 1 января 1970 года UTC+0.

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

Это – легковесное численное представление даты. Из таймстампа всегда можно получить дату с помощью new Date(timestamp) и преобразовать существующий объект Date в таймстамп, используя метод date.getTime() (см. ниже).

Датам до 1 января 1970 будут соответствовать отрицательные таймстампы, например:

Если аргумент всего один, и это строка, то из неё «прочитывается» дата. Алгоритм разбора – такой же, как в Date.parse , который мы рассмотрим позже.

Создать объект Date с заданными компонентами в местном часовом поясе. Обязательны только первые два аргумента.

  • year должен состоять из четырёх цифр: значение 2013 корректно, 98 – нет.
  • month начинается с 0 (январь) по 11 (декабрь).
  • Параметр date здесь представляет собой день месяца. Если параметр не задан, то принимается значение 1 .
  • Если параметры hours/minutes/seconds/ms отсутствуют, их значением становится 0 .

Минимальная точность – 1 мс (1/1000 секунды):

Получение компонентов даты

Существуют методы получения года, месяца и т.д. из объекта Date :

getFullYear() Получить год (4 цифры) getMonth() Получить месяц, от 0 до 11. getDate() Получить день месяца, от 1 до 31, что несколько противоречит названию метода. getHours(), getMinutes(), getSeconds(), getMilliseconds() Получить, соответственно, часы, минуты, секунды или миллисекунды.

Многие интерпретаторы JavaScript реализуют нестандартный и устаревший метод getYear() , который порой возвращает год в виде двух цифр. Пожалуйста, обходите его стороной. Если нужно значение года, используйте getFullYear() .

Кроме того, можно получить определённый день недели:

getDay() Вернуть день недели от 0 (воскресенье) до 6 (суббота). Несмотря на то, что в ряде стран за первый день недели принят понедельник, в JavaScript начало недели приходится на воскресенье.

Все вышеперечисленные методы возвращают значения в соответствии с местным часовым поясом.

Однако существуют и их UTC-варианты, возвращающие день, месяц, год для временной зоны UTC+0: getUTCFullYear(), getUTCMonth(), getUTCDay(). Для их использования требуется после «get» подставить «UTC» .

Если ваш местный часовой пояс смещён относительно UTC, то следующий код покажет разные часы:

Помимо вышеприведённых методов, существуют два особых метода без UTC-варианта:

Для заданной даты возвращает таймстамп – количество миллисекунд, прошедших с 1 января 1970 года UTC+0.

Возвращает разницу в минутах между местным часовым поясом и UTC:

Установка компонентов даты

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

У всех этих методов, кроме setTime() , есть UTC-вариант, например: setUTCHours() .

Как мы видим, некоторые методы могут устанавливать сразу несколько компонентов даты, например: setHours . Если какая-то компонента не указана, она не меняется.

Автоисправление даты

Автоисправление – это очень полезная особенность объектов Date . Можно устанавливать компоненты даты вне обычного диапазона значений, а объект сам себя исправит.

Неправильные компоненты даты автоматически распределяются по остальным.

Предположим, нам требуется увеличить дату «28 февраля 2020» на два дня. В зависимости от того, високосный это год или нет, результатом будет «2 марта» или «1 марта». Нам об этом думать не нужно. Просто прибавляем два дня. Объект Date позаботится об остальном:

Эту возможность часто используют, чтобы получить дату по прошествии заданного отрезка времени. Например, получим дату «спустя 70 секунд с текущего момента»:

Также можно установить нулевые или даже отрицательные значения. Например:

Преобразование к числу, разность дат

Если объект Date преобразовать в число, то получим таймстамп по аналогии с date.getTime() :

Важный побочный эффект: даты можно вычитать, в результате получаем разность в миллисекундах.

Этот приём можно использовать для измерения времени:

Date.now()

Если нужно просто измерить время, объект Date нам не нужен.

Существует особый метод Date.now() , возвращающий текущую метку времени.

Семантически он эквивалентен new Date().getTime() , однако метод не создаёт промежуточный объект Date . Так что этот способ работает быстрее и не нагружает сборщик мусора.

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

Вероятно, предыдущий пример лучше переписать так:

Бенчмаркинг

Будьте внимательны, если хотите точно протестировать производительность функции, которая зависит от процессора.

Например, сравним две функции, вычисляющие разницу между двумя датами: какая сработает быстрее?

Подобные вычисления, замеряющие производительность, также называют «бенчмарками» (benchmark).

Обе функции делают буквально одно и то же, только одна использует явный метод date.getTime() для получения даты в миллисекундах, а другая полагается на преобразование даты в число. Результат их работы всегда один и тот же.

Но какая функция быстрее?

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

Вот это да! Метод getTime() работает ощутимо быстрее! Всё потому, что не производится преобразование типов, и интерпретаторам такое намного легче оптимизировать.

Замечательно, это уже что-то. Но до хорошего бенчмарка нам ещё далеко.

Представьте, что при выполнении bench(diffSubtract) процессор параллельно делал что-то ещё, также потребляющее ресурсы. А к началу выполнения bench(diffGetTime) он это уже завершил.


Достаточно реалистичный сценарий в современных многопроцессорных операционных системах.

В итоге у первого бенчмарка окажется меньше ресурсов процессора, чем у второго. Это может исказить результаты.

Для получения наиболее достоверных результатов тестирования производительности весь набор бенчмарков нужно запускать по нескольку раз.

Современные интерпретаторы JavaScript начинают применять продвинутые оптимизации только к «горячему коду», выполняющемуся несколько раз (незачем оптимизировать то, что редко выполняется). Так что в примере выше первые запуски не оптимизированы должным образом. Нелишним будет добавить предварительный запуск для «разогрева»:

Современные интерпретаторы JavaScript выполняют множество оптимизаций. Они могут повлиять на результаты «искусственных тестов» по сравнению с «нормальным использованием», особенно если мы тестируем что-то очень маленькое, например, работу оператора или встроенной функции. Поэтому если хотите серьёзно понять производительность, пожалуйста, изучите, как работают интерпретаторы JavaScript. И тогда вам, вероятно, уже не понадобятся микробенчмарки.

Отличный набор статей о V8 можно найти на http://mrale.ph.

Разбор строки с датой

Метод Date.parse(str) считывает дату из строки.

Формат строки должен быть следующим: YYYY-MM-DDTHH:mm:ss.sssZ , где:

  • YYYY-MM-DD – это дата: год-месяц-день.
  • Символ «T» используется в качестве разделителя.
  • HH:mm:ss.sss – время: часы, минуты, секунды и миллисекунды.
  • Необязательная часть ‘Z’ обозначает часовой пояс в формате +-hh:mm . Если указать просто букву Z , то получим UTC+0.

Возможны и более короткие варианты, например, YYYY-MM-DD или YYYY-MM , или даже YYYY .

лабы по информатике, егэ

лабораторные работы и задачи по программированию и информатике, егэ по информатике

PHP занятие 6. Функции даты и времени

Функции даты и функции времени php

Функции даты и времени в PHP позволяют получить дату и время с сервера, с которого запускается сценарий.

Рассмотрим основные функции даты и функции времени php.

Функция date в php

Данная функция возвращает строку в виде даты и/или времени в указанном формате ( $format ). Шаблон формата указывается в качестве аргумента функции.

Рассмотрим варианты символов, которые распознаются в параметре формат:

Символ в параметре format Описание Пример возвращаемого значения

Функция даты php
День
d День месяца: две цифры с первым нулём от 01 до 31
D День недели в словесном представлении, 3 символа от Mon до Sun
j День месяца без первого нуля от 1 до 31
l (строчная «L») Полное словесное название дня недели от Sunday до Saturday
N Порядковый номер дня недели от 1 (понедельник) до 7 (воскресенье)
S Сокращение порядкового числительного дня месяца: два символа st, nd, rd или
th. Применяется вместе с j
w Порядковый номер дня недели от (воскресенье) до 6 (суббота)
z Порядковый номер дня в году (начиная с 0) От до 365
Неделя
W Порядковый номер недели года: недели начинаются с понедельника 33 (33-я неделя года)
Месяц
F Полное словесное название месяца, например May от January до December
m Порядковый номер месяца с первым нулём от 01 до 12
M Сокращенное словесное название месяца: три символа от Jan до Dec
n Порядковый номер месяца без первого нуля от 1 до 12
t Количество дней в указанном месяце от 28 до 31
Год
L Указывает на високосный год 1, если год високосный, иначе .
o Номер года 1999 или 2003
Y Порядковый номер года: четыре цифры 1998, 2008
y Номер года: две цифры 98, 08
Функции времени php
a Ante meridiem (с англ. «до полудня») или Post meridiem (с англ. «после полудня») am или pm
A Ante meridiem или Post meridiem заглавными буквами AM или PM
B Время в формате Интернет-времени от 000 до 999
g Часы в 12-часовом формате без первого нуля от 1 до 12
G Часы в 24-часовом формате без первого нуля от до 23
h Часы в 12-часовом формате с первым нулём от 01 до 12
H Часы в 24-часовом формате с первым нулём от 00 до 23
i Минуты с первым нулём от 00 до 59
s Секунды с первым нулём от 00 до 59
u Микросекунды Например, 654321
v Миллисекунды Например, 654
Временная зона
e Код шкалы временной зоны Например, UTC, GMT
I (заглавная i) Признак летнего времени 1, если дата соответствует летнему времени, в противном случае.
Полная дата/время
c Дата в формате, указанном в примере 2006-05-12T15:19:21+00:00
r Дата в формате, указанном в примере Например: Thu, 23 Dec 2010 18:05:07 +0200
U Количество секунд, прошедших с начала Эпохи Unix (с 1 января 1970 00:00:00 GMT)

Пример:

// выведет день недели в формате: Saturday echo date(«l»); // выведет дату в формате 2020-01-28 echo date(‘Y-m-d’); // выведет дату и время в формате: Saturday 8th of August 2020 06:13:44 PM echo date(‘l jS \of F Y h:i:s A’);

Функция time и mktime в php

time — возвращает количество секунд, прошедших с начала Эпохи Unix (c 1 января 1970 00:00:00 GMT) до текущего времени

Функция не предназначена для вывода результата в виде даты или времени, а используется совместно с другими функциями.
Пример использования функции в «чистом виде»:

$now = time(); // метка текущей даты echo $now; // выведет что-то типа 1485618140 $nextWeek = time() + (7 * 24 * 60 * 60); // 7 дней; 24 часа; 60 минут; 60 секунд echo $nextWeek; // выведет что-то типа 1486222940

Функция используется совместно с функцией date():

$now = time(); $nextWeek = time() + (7 * 24 * 60 * 60); // Сейчас: 2020-01-28 echo ‘Сейчас: ‘. date(‘Y-m-d’) .»\n»; // Сейчас: 2020-01-28 echo ‘Сейчас: ‘. date(‘Y-m-d’, $now) .»\n»; // Следующая неделя: 2020-02-04 echo ‘Следующая неделя: ‘. date(‘Y-m-d’, $nextWeek) .»\n»;

Функция используется совместно с функцией mktime:

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

Аргументы:

Аргументы могут быть опущены в порядке справа налево.

Рис. 6.1. Использование функции mktime и date

//Вывод текущей даты и времени echo date(«r»); //Sat, 28 Jan 2020 19:58:45 +0400 // создаем метку для «завтра» $tomorrow = mktime(0,0,0,date(«m»),date(«d»)+1, date(«Y»)); echo date(«r», $tomorrow); // Sun, 29 Jan 2020 00:00:00 +0400 // создаем метку для «следующий месяц» $nextmonth = mktime(0,0,0,date(«m»)+1,date(«d»), date(«Y»)); echo date(«r», $nextmonth ); //Tue, 28 Feb 2020 00:00:00 +0400 // создаем метку для «прошлый год» $lastyear= mktime(0,0,0,date(«m»)+1,date(«d»), date(«Y»)-1); echo date(«r», $lastyear); //Sun, 28 Feb 2020 00:00:00 +0400

  1. Создайте строковую переменную now
  2. Создайте строковую переменную birthday
  3. Присвойте переменной now значение метки времени актуальной даты (сегодня)
  4. Присвойте переменной birthday значение метки времени Вашего дня рождения
  1. Выведите фразу «До моего дня рождения осталось «
  2. Выведите количество секунд, оставшееся до Вашего дня рождения
  3. Закончите фразу » секунд»

Дополните код:

Использование функций даты и времени

  1. Создайте строковую переменную now .
  2. Присвойте переменной now значение метки времени актуальной даты (сегодня).
  3. Создайте переменную $H и присвойте ей значение часов, выделенных из значения переменной $now .
  4. Создайте переменную $i и присвойте ей значение минут, выделенных из значения переменной $now .
  5. Показывать текущее время в виде: … часов…мин . Изменять окончание слова часов/часа/час в зависимости от кол-ва часов и минут.

Напоминание:
Time() – возвращает текущее время
Date(format,время) – возвращает время, заданного вторым параметром в указанном формате:

Функция getdate в php

Функция getdate возвращает информацию о дате и/или времени

  • Возвращается ассоциативный массив с информацией о параметре timemetka , который представляет собой метку времени.
  • Если параметр не использовать, то будет взято текущее локальное время.

Индексы ассоциативного массива:

PHP — Руководство по РНР 3.0 — Функции Даты/Времени

checkdate

Описание

int checkdate (int month, int day, int year);

Возвращает true если данная дата правильна, иначе false. Проверяет правильность даты, заданной аргументами. Дата считается правильной, если:

год между 1900 и 32767 включительно

месяц между 1 и 12 включительно

день находится в диапазоне разрешенных дней данного месяца. Високосные годы учитываются.

Описание

string date (string format, int timestamp);

Возвращает строку, отформатированную согласно данной строке и используя данную временную метку или текущее локальное время, если не задана временная метка.


В фоматной строке должны использоваться следующие символы:

d — день месяца, цифровой, 2 цифры (на первом месте ноль)

D — день недели, текстовый, 3 буквы; т.е. «Fri»

F — месяц, текстовый, длинный; т.е. «January»

h — час, цифровой, 12-часовой формат

H — час, цифровой, 24-часовой формат

i — минуты, цифровой

j — день месяца, цифровой, без начальных нулей

l (строчная ‘L’) — день недели, текстовый, длинный; т.е. «Friday»

m — месяц, цифровой

M — месяц, текстовый, 3 буквы; т.е. «Jan»

s — секунды, цифровой

S — английский порядковый суффикс, текстовый, 2 символа; т.е. «th», «nd»

U — секунды с начала века

Y — год, цифровой, 4 цифры

w — день недели, цифровой, 0 означает воскресенье

y — год, цифровой, 2 цифры

z — день года, цифровой; т.е. «299»

Нераспознанные символы в форматной строке будут печататься как есть.

Пример 1. Пример date()

Функции date() и mktime() возможно использовать вместе для того, чтобы найти даты в будущем или прошлом.

Пример 2.Пример функций date() и mktime()

Для того, чтобы отформатировать даты на других языках, Вы должны использовать функции setlocale() и strftime()

strftime

Описание

string strftime (string format, int timestamp);

Возвращает строку, отформатированную согласно данной форматной строке и используя данную временную метку или текущее локальное время, если метка не задана. Названия месяцев и недель и другие, зависящие от языка строки, зависят от текущего locale, устанавливающегося с помощью setlocale() .

В форматной строке следует использовать следующие спецификаторы преобразований:

%a — сокращенное название дня недели согласно текущему locale

%A — полное название дня недели согласно текущему locale

%b — сокращенное название месяца согласно текущему locale

%B — полное название месяца согласно текущему locale

%c — предпочтительное представление даты и времени для текущего locale

%d — день месяца как десятичное число (в диапазоне от 0 до 31)

%H — час как десятичное число в 24-часовом формате (в диапазоне от 00 до 23)

%I — час как десятичное число в 12-часовом формате (в диапазоне от 01 до 12)

%j — день года как десятичное число (в диапазоне от 001 до 366)

%m — месяц как десятичное число (в диапазоне от 1 до 12)

%M — минуты как десятичное число

%p — `am’ или `pm’ согласно текущему времени, или соответствующие строки для текущего locale

%S — секунды как десятичное число

%U — номер недели текущего года как десятичное число, начиная с первого Воскресенья в качестве первого дня первой недели

%W — номер недели текущего года как десятичное число, ночиная с первого Понедельника в качестве первого дня первой недели

%w — день недели как целое число, Воскресенье — 0-й день

%x — предпочитаемое представление даты для текущего locale не включающее время

%X — предпочитаемое представление времени для текущего locale не включающее дату

%y — год как десятичное число без столетия (в диапазоне от 00 до 99)

%Y — год как десятичное число, включая столетие

%Z — временная зона или название или сокращение

Пример 1. Пример функции strftime()

Пример будет работать, если у вас установлены соответствующие locale.

getdate

Описание

array getdate (int timestamp);

Возвращает ассоциативный массив, содержащий информацию о дате со следующими элементами:

«mday» — день месяца

«wday» — день недели, цифровой

«mon» — месяц, цифровой


«year» — год, цифровой

«yday» — день года, цифровой; т.е. «299»

«weekday» — день недели, текстовый, полный; т.е. «Friday»

«month» — месяц, текстовый, полный; т.е. «January»

gmdate

Описание

string gmdate (string format, int timestamp);

Аналогична функции date() за исключением того, что время возвращается в Гринвичском формате Greenwich Mean Time (GMT). Например, при запуске в Финляндии (GMT +0200), первая строка ниже напечатает «Jan 01 1998 00:00:00», в то время как вторая строка напечатает «Dec 31 1997 22:00:00».

Пример 1. пример gmdate()

mktime

Описание

int mktime (int hour, int minute, int second, int month, int day, int year);

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

Возвращает временную метку Unix согласно данным аргументам. Эта временная метка является целым числом, равным количеству секунд между эпохой Unix (1 Января 1970) и указанным временем.

Аргументы могут быть опущены с права налево; каждый опущенный таким образом аргумент будет установлен в текущую величину согласно локальной дате и времени.

MkTime is useful for doing date arithmetic and validation, as it MkTime полезена при арифметических дейтсвиях с датой и ее проверкой, она будет автоматически вычислять корректную величину для вешедших за границы параметров. Например, каждая из следующих строк возвращает строку «Jan-01-1998».

Пример 1. Пример mktime()

gmmktime

Описание

int gmmktime (int hour, int minute, int second, int month, int day, int year);

Идентична mktime() за исключением передаваемых параметров, представляющих дату в GMT.

Описание

Возвращает текущее время, измеренное в числе секунд с эпохи Unix (1 Января 1970 00:00:00 GMT).

microtime

Описание

string microtime (void);

Возвращает строку «msec sec» где sec текущее время, измеренное в числе секунд с эпохи Unix (0:00:00 1 Января, 1970 GMT), а msec — это часть в микросекундах. Эти функции доступны только в операционных системах, поддерживающих системный вызов gettimeofday().

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

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

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

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

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

Как получить метку времени (UNIX timestamp)?

Как можно получить метку времени в JS?

3 ответа 3

Метод Date.now()

Метод Date.now() возвращает дату сразу в виде миллисекунд.

Технически, он аналогичен вызову +new Date(), но в отличие от него не создаёт промежуточный объект даты, а поэтому – во много раз быстрее.

Его использование особенно рекомендуется там, где производительность при работе с датами критична. Обычно это не на веб-страницах, а, к примеру, в разработке игр на JavaScript.

Миллисекунды проще всего получить так —

Оператор + в данном случае приводит операнд к числу, вызывая valueOf , на что объект Date возвращает временную метку в виде числа ( number ).

Это метод объект Date , а не его прототипа для экземпляров, поэтому нет необходимости в создании экземпляра для получения timestamp.
Поддерживается всеми современными браузерами.

Получение метки из экземпляра, так же поддерживается старыми браузерами, поэтому может быть полифиллом там, где нет Date.now (не дай Бог, чтобы была необходимость поддерживать столь старые интерпретаторы):

Числовое значение объекта, то, что получаем через унарный плюс.

Пример работы и конвертация в другие представления:

Работа с датой и временем в PHP

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

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

В PHP работа с датой чаще всего сталкивается с UNIX TIMESTAMP. Здесь время хранится целым числом. Исчисление времени начинается с 1 января 1970 года. Поэтому, например, дата и время 11.12.2014 19:40:00, будет представлено числом 1418316000. Эта цифра показывает, сколько секунд прошло с нулевой даты 1 января 1970 года, названой Эпохой Unix.

Пример php-страницы, предоставляющий возможности преобразования данных представлен на сайте в разделе программ программой «Преобразование формата даты и времени». Здесь можно сформировать нужную дату в формат UNIX TIMESTAMP, а так же привести этот формат в стандартный, понятный человеку вид.


Получение текущего времени и даты в PHP

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

которая как раз вернет значение в формате unix timestamp.

echo time(); // вывод текущего времени в формате unix timestamp

На первый взгляд не очень удобный формат для человека, но, как известно, чем проще представление данных, тем быстрее выполняется обработка этих значений компьютером. Кроме того, хранение числа в базе данных намного экономичнее, чем какой-либо специальный формат. Так же, PHP работает со временем одинаково и на Unix и на Windows платформе, что обеспечивает возможность использовать код на любой из этих платформ.

Преобразование формата даты и времени в PHP

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

array getdate([int timestamp])

Она возвращает ассоциативный массив, содержащий информацию о дате. Если параметр timestamp не указан, будут возвращены сведения о текущем времени. Этот массив содержит следующие значения:

seconds секунды (0-59)
minutes минуты (0-59)
hours часы (0-23)
mday день месяца (1-31)
wday день недели (0-6), начиная с воскресенья
mon месяц (1-12)
year год
yday день года (0-365)
weekday название дня недели (например, Monday)
month название месяца (например, January)
количество секунд, прошедших с начала Эпохи Unix

Полученный массив, позволяет вывести значения нужном виде:

$date = 1418372345; // исходное дата и время 12.12.2014 11:19:05
$date_mas = getdate($date);
echo $date_mas[ ‘mday’ ] . ‘ . ‘ . $date_mas[ ‘mon’ ] . ‘ . ‘ . $date_mas[ ‘year’ ]; // 12.12.2014

Так же для преобразования формата даты и времени можно воспользоваться функцией:

string date(string $template [, int $unix_timestamp])

Она предназначена для получения текущей даты unix timestamp в нужном формате. Строковый параметр $template определяет формат вывода. Параметром $unix_timestamp можно задать, с каким значением времени производится работа. Он необязательный, поэтому, если его не указать, будет использоваться текущая дата и время.

Формат задается следующими значениями:

a «до» и «после» полудня: «am» или «pm»
A «до» и «после» полудня заглавными буквами: «AM» или «PM»
d день месяца 2 цифрами (если меньше 10, на первом месте ноль) (от 01 до 31)
D день недели 3 буквами. Например, «Mon» (понедельник)
j день месяца, 1-2 цифры без начальных нулей (от 1 до 31)
F название месяца. Например, «January»
h час, 12-часовой формат (от 01 до 12)
H час, 24-часовой формат (от 00 до 23)
g час, 12-часовой формат без нулей (от 1 до 12)
G час, 24-часовой формат без нулей (от 0 до 23)
i минуты (от 00 до 59)
I (заглавная i) 1, если действует переход на летнее время, иначе 0
L 1, если год високосный, или 0 если не високосный
B время в формате Интернет-времени (альтернативной системы отсчета времени суток) (от 000 до 999)
T временная зона компьютера. Например, MDT
l (строчная L) день недели. Например, «Monday»
m месяц, две цифры с нулями (от 01 до 12)
n месяц, одна-две цифры без нулей (от 1 до 12)
M сокращенное наименование месяца. Например, «Jan»
t число дней в указанном месяце (от 28 до 31)
s секунды (от 0 до 59)
S англоязычный порядковый суффикс числа из двух букв («st», «nd», «rd» или «th»)
U целое число секунд, прошедших с момента начала эпохи UNIX
y год, цифровой, 2 цифры (14)
Y год, цифровой, 4 цифры (2014)
z порядковое число дня в году (от 0 до 365)
Z смешение временной зоны в секундах (от -43200 до 43200)
N порядковый номер дня недели от 1 (понедельник) до 7 (воскресенье) в соответствии со стандартом ISO-8601, (добавлен в версии PHP 5.1.0)
w порядковый номер дня недели от 0 (воскресенье) до 6 (суббота)
W порядковый номер недели года в соответствии со стандартом ISO-8601; недели начинаются с понедельника (добавлено в версии PHP 4.1.0)
o номер года в соответствии со стандартом ISO-8601. Имеет то же значение, что и Y, кроме случая, когда номер недели ISO (W) принадлежит предыдущему или следующему году; тогда будет использован год этой недели. (добавлен в версии PHP 5.1.0)
e код шкалы временной зоны. Например: UTC, GMT, Atlantic/Azores (добавлен в версии PHP 5.1.0)
O разница с временем по Гринвичу, в часах. Например: +0200
P разница с временем по Гринвичу с двоеточием между часами и минутами. Например: +02:00 (добавлено в версии PHP 5.1.3)
c дата в формате стандарта ISO 8601. Например, 2014-12-12T15:19:21+00:00 (добавлено в PHP 5)
r дата в формате » RFC 2822. Например: Thu, 21 Dec 2000 16:01:07 +0200
U количество секунд, прошедших с начала Эпохи Unix (The Unix Epoch, 1 января 1970 00:00:00 GMT)

Как видно из списка, с помощью этой функции можно получить очень много полезных данных о дате. Например:

$date = 1418372345; // исходное дата и время 12.12.2014 11:19:05

echo date( ‘d.m.Y’ , $date); // 12.12.2014 (дата)
echo date( ‘H:i:s’ , $date); // 11:19:05 (время)
echo date( ‘H:i’ , $date); // 11:19 (время)
echo date( ‘t’ , $date); // 31 (число дней в месяце)
echo date( ‘z’ , $date); // 345 (порядковый номер дня в году)
echo date( ‘l dS \of F Y h:i:s A’ , $date); // Friday 12th of December 2014 11:19:05 AM

Другие символы, входящие в шаблон, будут выведены в строке как есть. Если же потребуется ввести символ, который используется в функции как код формата, перед ними вставляется символ «\». Для значения «\n» (символ перехода на новую строку), следует указать «\\n». Таким образом, можно делать вывод целого сообщения, содержащего сведения о дате и времени:

echo date( ‘Сегодня z-й день Y-го года’ , $date); // Сегодня 345-й день 2014-го года

Преобразование даты и времени в формат timestamp

Для обратного преобразования даты из стандартного формата в числовое значение timestamp применяется функция:

int mktime([int hour [, int minute [, int second [, int month [, int day [, int year [, int is_dst]]]]]]])

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

$my_date = mktime (10, 30, 0, 12, 12, 2014);

Следует внимательно относится к порядку аргументов функции: часы, минуты, секунды, месяц, день, год.

Кроме простого формирования значения даты в timestamp, функцию mktime() можно использовать для арифметически вычисления с датами. Для этого просто можно ввести необходимые аргументы. Например, если указать 14 месяц, то в итоговом значении, месяц будет 2-й, а значение года увеличится на единицу:

$my_day = 12;
$my_month = 12;
$my_year = 2014;

$new_date = mktime(0, 0, 0, $my_month + 5, $my_day, $my_year);

echo date( ‘d.m.Y’ , $new_date); // 12.05.2015 (дата)

Аналогично можно поступать и с другими параметрами.

Проверка корректности даты в PHP

При работе с датами, особенно при формировании даты предложенной выше функцией mktime() необходимо учитывать корректность вводимой даты. Для этого в PHP используется функция:

bool checkdate(int month, int day, int year)

Возвращает true если дата, заданная аргументами, является правильной; иначе возвращает false. Дата считается правильной, если:

— год в диапазоне от 1 до 32767;

— месяц в диапазоне от 1 до 12;

— день для заданного месяца с учетом високосного года указаны правильно.

Пример проверки даты:

$my_day = 32;
$my_month = 12;
$my_year = 2014;

if (!checkdate($my_month, $my_day, $my_year))
echo ‘Ошибка: дата указана некорректно’ ;

Python time.time() возвращает локальную или временную метку UTC?

Поддерживает ли time.time() в модуле времени Python системное время или время в UTC?

Функция time.time() возвращает количество секунд с эпохи в секундах. Обратите внимание, что «эпоха» определяется как начало 1 января 1970 года в UTC. Таким образом, эпоха определяется в терминах UTC и устанавливает глобальный момент времени. Независимо от того, где вы находитесь «секунды прошлой эпохи» (time.time()) возвращает одно и то же значение в тот же момент.

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

Переменная ts — это время, возвращаемое в секундах. Затем я преобразовал его в строку, используя библиотеку datetime , создавая для нее строку, которая читается человеком.

Это для текстовой формы метки времени, которая может использоваться в ваших текстовых файлах. (Название вопроса в прошлом было иным, поэтому введение в этот ответ было изменено, чтобы уточнить, как его можно интерпретировать как время. [Обновлено 2020-01-14]).

Вы можете получить .now() метку в виде строки с помощью .now() или .utcnow() datetime.datetime :

now отличается от utcnow как ожидалось, — иначе они работают одинаково:

Вы можете явно отобразить метку времени в строке:

Или вы можете еще более четко форматировать временную метку так, как вам нравится:

Если вы хотите формат ISO, используйте метод .isoformat() объекта:

Вы можете использовать их в переменных для вычислений и печати без конверсий.

Основываясь на ответе #squiguy, чтобы получить истинную метку времени, я бы напечатал ее из float.

По крайней мере, это понятие.

Ответом может быть ни то, ни другое.

ни то, ни другое: time.time() возвращает приблизительно количество секунд, прошедших с начала эпохи. Результат не зависит от часового пояса, поэтому это не UTC или местное время. Здесь определение POSIX для «Секунды с эпохи».

оба: time.time() не требует синхронизации системных часов, поэтому он отражает их значение (хотя это не имеет никакого отношения к местному часовому поясу). Разные компьютеры могут получать разные результаты одновременно. С другой стороны, если время вашего компьютера синхронизировано, то из метки времени легко получить время UTC (если мы игнорируем високосные секунды):

Информацию о том, как получить метки времени из времени UTC в различных версиях Python, см. в разделе Как преобразовать дату в секунды с начала эпохи по UTC?

Илон Маск рекомендует:  Самоучитель HTML под Android
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL