Как получить текущее время
Перейти к содержимому

Как получить текущее время

16. Java — Дата и время

Java предоставляет класс Date, который доступен в пакете java.util, этот класс заключает в себе текущую дату и время.

Содержание

Конструкторы

Класс Date поддерживает два конструктора, которые показаны ниже.

Конструктор и описание
1 Date()
Этот конструктор инициализирует объект с текущей датой и временем.
2 Date(long millisec)
Этот конструктор принимает аргумент равный числу миллисекунд, истекших с полуночи 1 января 1970 г.

Методы класса Date

Ниже представлены методы класса Date.

Методы с описанием
1 boolean after(Date date)
Возвращает значение true, если вызывающий объект date содержит дату, которая раньше заданной даты, в противном случае он возвращает значение false.
2 boolean before(Date date)
Возвращает значение true, если вызывающий объект date содержит дату, более раннюю, чем заданная дата, в противном случае он возвращает значение false.
3 Object clone()
Дублирование вызывающего объекта date.
4 int compareTo(Date date)
Сравнивает значение вызывающего объекта с этой датой. Возвращает 0, если значения равны. Возвращает отрицательное значение, если объект вызова является более ранним, чем дата. Возвращает положительное значение, если объект вызова позже даты.
5 int compareTo(Object obj)
Работает точно так же compareTo(Date), если объект вызова имеет класс Date. В противном случае вызывает ClassCastException.
6 boolean equals(Object date)
Возвращает значение true, если вызывающий объект date содержит то же время и дату, которая указана в date, в противном случае он возвращает значение false.
7 long getTime()
Возвращает количество миллисекунд, истекших с 1 января 1970 года.
8 int hashCode()
Возвращает хэш-код для вызывающего объекта.
9 void setTime(long time)
Задает дату и время, соответствующие моменту времени, что представляет собой общее затраченное время в миллисекундах от полуночи 1 января 1970 года.
10 String toString()
Преобразует вызывающий объект date в строку и возвращает результат.

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

Получить текущую дату и время в Java достаточно не трудно. Вы можете использовать простой объект date вместе с методом toString(), чтобы вывести текущую дату и время следующим образом:

Получим следующий результат:

Сравнение дат

Существуют три способа в Java сравнить даты:

  • Можно использовать функцию getTime(), чтобы получить количество миллисекунд, прошедших с момента полуночи 1 января 1970, для обоих объектов, а затем сравнить эти два значения.
  • Вы можете использовать методы before(), after() и equals(). Поскольку 12 число месяца раньше 18 числа, например, new Date(99, 2, 12).before(new Date (99, 2, 18)) возвращает значение true.
  • Можно использовать метод compareTo(), который определяется сопоставимым интерфейсом и реализуется по дате.

Форматирование даты с помощью SimpleDateFormat

SimpleDateFormat — это конкретный класс для парсинга и форматирования даты в Java. SimpleDateFormat позволяет начать с выбора любых пользовательских шаблонов для форматирования даты и времени. Например:

Получим следующий результат:

Формат-коды SimpleDateFormat

Для того, чтобы задать в Java формат даты и времени, используйте строковый шаблон (регулярные выражения) с датой и временем. В этой модели все буквы ASCII зарезервированы как шаблон письма, которые определяются следующим образом:

Форматирование даты с помощью printf

Формат даты и времени можно сделать без труда с помощью метода printf. Вы используете формат двух букв, начиная с t и заканчивая одним из символов в таблице, приведенных ниже. Например:

Получим следующий результат:

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

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

Стандартная библиотека C ++ не предоставляет правильный тип даты. C ++ наследует структуры и функции для обработки дат и времени из C. Чтобы получить доступ к функциям и структурам, связанным с датой и временем, вам нужно будет включить заголовочный файл <ctime> в вашей программе на 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 -> .

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

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

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

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

Результат выполнения
Дата и время

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

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

Результат выполнения
Добавление нескольких дней к текущей дате

Реализация функции задержки

Результат выполнения
Функция задержки

Комментариев к записи: 17

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <time.h>

#define ADD_DAYS 300
#define BUFF_SIZE 40

timer = time( NULL );
u = localtime(&timer);
strftime(s1, BUFF_SIZE, "%Y.%m.%d %H:%M:%S " , u);

u->tm_mday += ADD_DAYS;
next = mktime(u);
u = localtime(&next);
strftime(s2, BUFF_SIZE, "%Y.%m.%d %H:%M:%S " , u);

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *