Программирование
Тема 8.2 Работа с датами и временем в Java и C#
1
Структура DateTime в С#
-
Варианты создания объектов типа DateTime :
-
DateTime date1 = new DateTime();
-
Console.WriteLine(date1); // 01.01.0001 0:00:00
-
DateTime date1 = new DateTime(2015, 7, 20); // год –
-
// месяц - день
-
Console.WriteLine(date1); // 20.07.2015 0:00:00
-
DateTime date1 = new DateTime(2015, 7, 20, 18, 30, 25);
-
// год - месяц - день - час - минута - секунда
-
Console.WriteLine(date1); // 20.07.2015 18:30:25
2
Структура DateTime в С#
3
Структура DateTime в С#
-
Варианты получения текущей даты и времени:
-
Console.WriteLine(DateTime.Now);
-
Console.WriteLine(DateTime.UtcNow);
-
Console.WriteLine(DateTime.Today);
4
Структура DateTime в С#
-
Методы сложения дат:
-
Console.WriteLine(DateTime.Now);
-
Add(DateTime date) //добавляет дату date
-
AddDays(double value) //добавляет к текущей дате
-
// несколько дней
-
AddHours(double value) // добавляет к текущей дате
-
// несколько часов
-
AddMinutes(double value) // добавляет к текущей дате
-
// несколько минут
-
AddMonths(double value) // добавляет к текущей дате
-
// несколько месяцев
-
AddYears(double value) // добавляет к текущей дате
-
// несколько лет
5
Структура DateTime в С#
-
Методы сложения дат:
-
Console.WriteLine(DateTime.Now);
-
Add(DateTime date) //добавляет дату date
-
AddDays(double value) //добавляет к текущей дате
-
// несколько дней
-
AddHours(double value) // добавляет к текущей дате
-
// несколько часов
-
AddMinutes(double value) // добавляет к текущей дате
-
// несколько минут
-
AddMonths(double value) // добавляет к текущей дате
-
// несколько месяцев
-
AddYears(double value) // добавляет к текущей дате
-
// несколько лет
-
Пример. Добавление к дате 3-х часов
-
DateTime date1 = new DateTime(2015, 7, 20, 18, 30, 25);
-
// 20.07.2015 18:30:25
-
Console.WriteLine(date1.AddHours(3)); // 20.07.2015 21:30:25
6
Структура DateTime в С#
-
Метод вычитания дат:
-
Substract(DateTime date)
-
Пример.
-
DateTime date1 = new DateTime(2015, 7, 20, 18, 30, 25);
-
// 20.07.2015 18:30:25
-
DateTime date2 = new DateTime(2015, 7, 20, 15, 30, 25);
-
// 20.07.2015 15:30:25
-
Console.WriteLine(date1.Subtract(date2)); // 03:00:00
-
// вычтем три часа
-
DateTime date1 = new DateTime(2015, 7, 20, 18, 30, 25);
-
// 20.07.2015 18:30:25
-
Console.WriteLine(date1.AddHours(-3)); // 20.07.2015 15:30:25
7
Структура DateTime в С#
-
Методы форматирования дат:
-
DateTime date1 = new DateTime(2015, 7, 20, 18, 30, 25);
-
Console.WriteLine(date1.ToLocalTime()); // 20.07.2015 21:30:25
-
Console.WriteLine(date1.ToUniversalTime()); // 20.07.2015 15:30:25
-
Console.WriteLine(date1.ToLongDateString()); // 20 июля 2015 г.
-
Console.WriteLine(date1.ToShortDateString()); // 20.07.2015
-
Console.WriteLine(date1.ToLongTimeString()); // 18:30:25
-
Console.WriteLine(date1.ToShortTimeString()); // 18:30
8
Структура DateTime в C#
-
Для работы с датами и временем в .NET предназначена структура DateTime. Она представляет дату и время от 00:00:00 1 января 0001 года до 23:59:59 31 декабря 9999 года в григорианском календаре.
-
Для инициализации объектов типа DateTime можно использовать различные варианты конструкторов. Пустой конструктор создает начальную дату (устанавливает минимально возможную дату). Чтобы задать конкретную дату, нужно использовать один из конструкторов, принимающих параметры (слайд 2).
-
Структура DateTime имеет 15 свойств, каждое из которых доступно только для чтения. Десять из них приведены в таблице на слайде 3. Первые семь представляют собой хорошо знакомые атрибуты даты и времени, и принимают значения заданные в конструкторе. Свойства DayOfWeek и DayOfYear предоставляют дополнительную информацию о текущей дате: номер дня в неделе (начиная с воскресенья) и в году. Свойство Date возвращает объект DateTime, представляющий тот же день, что и текущий объект DateTime, но значения его свойств Hour, Minute, Second и Millisecond устанавливаются в 0.
-
Если необходимо получить текущую время и дату, то можно использовать ряд свойств DateTime. Свойство DateTime.Now берет текущую дату и время компьютера, DateTime.UtcNow - дата и время относительно времени по Гринвичу (GMT) и DateTime.Today - только текущая дата (слайд 4).
-
Структура DateTime также содержит методы, позволяющие производить вычисления над датами и временем (слайд 6). Для объектов DateTime можно применять все операции сравнения (==, !=, <, >, <= и >=).
-
Метод Substract не имеет возможностей для отдельного вычитания дней, часов и так далее. Но это и не надо, так как мы можем передавать в метод AddDays() и другие методы добавления отрицательные значения (слайд 7 ).
-
Слайд 8: метод ToLocalTime() преобразует время UTC в локальное время, добавляя смещение относительно времени по Гринвичу. МетодToUniversalTime(), наоборот, преобразует локальное время во время UTC, то есть вычитает смещение относительно времени по Гринвичу. Остальные методы преобразуют дату к определенному формату.
9
Структура DateTime в С#
-
Пример. Работа с типом DateTime :
10
Классы Date, Calendar и GregorianCalendar в Java
-
Пример. Использование класса Date и класса SimpleDateFormat :
11
Классы Date, Calendar и GregorianCalendar в Java
-
Пример. Использование класса Calendar и GregorianCalendar :
12
Классы Date, Calendar и GregorianCalendar в Java
-
Класс Date находится в пакете java.util, а класс и SimpleDataFormat – в пакете java.text.
-
Класс Date хранит время в миллисекундах начиная с 1 января 1970 года. Данный класс имеет конструктор по умолчанию, который возвращает текущее время. Кроме этого можно создать объект Date используя конструктор, который принимает количество миллисекунд начиная с 1 января 1970 года. Для получения этого внутреннего времени используется метод getTime(). Кроме этого уже после создания можно изменить время с помощью setTime(long date).
-
Для того, чтобы отображать дату и время в удобном формате используется класс SimpleDataFormat. При создании шаблона для отображения даты dd - означает день, MM - месяц, yyyy - год, hh - часы и mm - минуты. В шаблоне могут присутствовать не все единицы, кроме того в качестве разделителя можно использовать любой текст (слайд 11).
-
Абстрактный класс Calendar позволяет работать с датой в рамках календаря. Единственной реализацией его является класс GregorianCalendar, также как и у даты конструктор по умолчанию возвращает календарь на текущий день, но вы можете задать его явно указав все параметры (слайд 12).
-
Календарь достаточно мощный класс, который позволяет увеличивать или уменьшать различные параметры даты, а также получать их.
13
-
Контрольные вопросы
-
Структура DateTime в С#: назначение и примеры использования.
-
Классы Date, Calendar и GregorianCalendar в Java: назначение и примеры