Для удобной работы с датой и временем в Java используются классы Calendar и Date. Оба класса находятся в библиотеке java.util. Начнем знакомство с датой. Класс Date хранит время в миллисекундах начиная с 1 января 1970 года. Данный класс имеет конструктор по умолчанию, который возвращает текущее время. Кроме этого можно создать объект Date используя конструктор, который принимает количество миллисекунд начиная с 1 января 1970 года. Для получения этого внутреннего времени используется метод getTime(). Кроме этого уже после создания можно изменить время с помощью setTime(long date).
Для того, чтобы отображать дату и время в удобном для вас формате используется SimpleDataFormat:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
package ru.cybern;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Test {
public void test()
{
Date d = new Date();
SimpleDateFormat format1 = new SimpleDateFormat("dd.MM.yyyy hh:mm");
SimpleDateFormat format2 = new SimpleDateFormat("День dd Месяц MM Год yyyy Время hh:mm");
System.out.println(format1.format(d)); //25.02.2013 09:03
System.out.println(format2.format(d)); //День 25 Месяц 02 Год 2013 Время 09:03
}
}
|
Очевидно, что при создании шаблона для отображения даты dd — означает день, MM — месяц, yyyy — год, hh — часы и mm — минуты. В шаблоне могут присутствовать не все единицы, кроме того как вы увидели выше в качестве разделитель можно использовать любой текст.
Рассмотрим абстрактный класс Calendar. Он позволяет работать с датой в рамках календаря, т.е он умеет прибавлять день, при этом учитывать високосные годы и прочее. Единственной реализацией его является класс GregorianCalendar, также как и у даты конструктор по умолчанию возвращает календарь на текущий день, но вы можете задать его явно указав все параметры:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
public class Test {
public void test()
{
Calendar c = new GregorianCalendar();//календарь на текущую дату
Calendar c2 = new GregorianCalendar(2013, 11, 25);//календарь на 25.11.2013
c2.add(Calendar.DAY_OF_YEAR, 1); //увеличиваем дату на 1 день
System.out.println(c2.getTime());// 26.11.2013
c2.add(Calendar.DAY_OF_YEAR, -1); //уменьшаем дату на 1 день
}
}
|
Календарь достаточно мощный класс, который позволяет получать названия месяцев и дней недели, увеличивать или уменьшать различные параметры текущей даты, а также получать их. Для удобства работы с ними вам нужно просто разобраться с типами данных с которыми он работает:
- DAY_OF_YEAR — день года (0- 365)
- DAY_OF_MONTH — день месяца( какой по счету день в месяце 0 — 31)
- WEEK_OF_MONTH — неделя месяца
- WEEK_OF_YEAR — неделя в году
- MONTH — номер месяца
- Year — номер года
- Calendar.ERA — эра
Т.е большинство методов принимает на вход Int field, где в качестве одного из вариантов вы можете выбрать перечисленные выше значения.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
package ru.cybern;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
public class Test {
public void test()
{
Calendar c = new GregorianCalendar(2013, 11, 25);//календарь на 25.11.2013
System.out.println(c.get(Calendar.MONTH));//11
System.out.println(c.get(Calendar.YEAR));//2013
System.out.println(c.get(Calendar.DAY_OF_WEEK_IN_MONTH));//4
System.out.println(c.get(Calendar.DAY_OF_WEEK));//4
System.out.println(c.get(Calendar.DAY_OF_YEAR));//359
System.out.println(c.get(Calendar.DAY_OF_MONTH));//25
}
}
|
|