Java. Урок 34. Дата и время

Уроки для начинающих   25 февраля 2013  Автор статьи:  

Для удобной работы с датой и временем в Java используются классы Calendar и Date. Оба класса находятся в библиотеке java.util. Начнем знакомство с датой. Класс Date хранит время в миллисекундах начиная с 1 января 1970 года. Данный класс имеет конструктор по умолчанию, который возвращает текущее время. Кроме этого можно создать объект Date используя конструктор, который принимает количество миллисекунд начиная с 1 января 1970 года. Для получения этого внутреннего времени используется метод getTime(). Кроме этого уже после создания можно изменить время с помощью setTime(long date).
Для того, чтобы отображать дату и время в удобном для вас формате используется SimpleDataFormat:

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, также как и у даты конструктор по умолчанию возвращает календарь на текущий день, но вы можете задать его явно указав все параметры:

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, где в качестве одного из вариантов вы можете выбрать перечисленные выше значения.

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
}
}


  • saiko

    Calendar c2 = new GregorianCalendar(2013, 11, 25);//календарь на 25.11.2013
    Это неправильно, так как нумерация месяцев начинается с 0.

  • bulletproof

    ачепятка «Для того, чтобы отображать дату и время в удобном для вас формате используется SimpleDataFormat:» надо SimpleDateFormat.

Научиться программировать

  • на Delphi

  • на Java

  • на C++