Java предоставляет некоторые классы связанные с временем и каледарем (Calendar), ниже перечислены эти классы:
Класс
Описание
java.util.Date
Класс, представляющий дату и время. К сожалению большинство методов этого класса устарели, рекомендуется не использовать эти методы, при этом класс Date все еще широко используется.
java.util.concurrent.TimeUnit
TimeUnit это Enum описывающий единицу даты и времени.
java.sql.Date
Класс описывающий дату. Информация про время вырезано. Этот класс обычно используется в JDBC.
java.sql.Time
Класс описывающий время (час, минута, секунда, милисекунда), и не содержит информацию о времени.Этот класс обычно используется в JDBC.
java.sql.Timestamp
Класс описывающий дату и время. Этот класс обычно используется в JDBC.
java.util.Calendar
Класс описывающий календарь. Имеет арифметические методы о времени, например добавить день, убавить день...
java.util.GregorianCalendar
Это прямой подкласс java.util.Calendar, описывающий дату по Григорианскому календарю, календарь широко использующийся в наши дни. Он имеет все методы из java.util.Calendar, чтобы применить арифметику над датой и временем.
java.util.TimeZone
TimeZone это класс описывающий часовой пояс, полезен когда вы работаете с Календарем на часовом поясе
java.text.SimpleDateFormat
Этот класс помогает вам сменить String имеющий формат даты на вид Date и обратно.
2- System.currentTimeMillis()
currentTimeMillis() это статистический метод класса System. Он возвращает количество времени в милисекундах от даты 1-1-1970 до настоящего времени.
java - джава - учиться java - учебник java -
системы текущего времени
- примеры java - java-программы
System.currentTimeMillis() обычно используется для мерки количества времени выполнения определенного действия способом вызова этого метода перед тем как начать работать, и после завершения работы.
java - джава - учиться java - учебник java -
система текущего
- примеры java - java-программы
JobTimeDemo.java
package org.wikitechy.tutorial.dt;
publicclass JobTimeDemo {
// Это метод суммирования всех чисел от 1 до 100.privatestatic int sum() {
int sum = 0;
for (int i = 0; i <= 100; i++) {
sum += i;
}
return sum;
}
privatestaticvoid doJob(int count) {
// Вызвать метод 'sum' с количеством раз данный параметром.for (int i = 0; i < count; i++) {
sum();
}
}
publicstaticvoid main(String[] args) {
long millis1 = System.currentTimeMillis();
doJob(10000);
long millis2 = System.currentTimeMillis();
long distance = millis2 - millis1;
System.out.println("Distance time in milli second: " + distance);
}
}
нажмите кнопку ниже, чтобы скопировать код. - от - java tutorials - команда
package org.wikitechy.tutorial.dt;
publicclass JobTimeDemo {
// Это метод суммирования всех чисел от 1 до 100.privatestatic int sum() {
int sum = 0;
for (int i = 0; i <= 100; i++) {
sum += i;
}
return sum;
}
privatestaticvoid doJob(int count) {
// Вызвать метод 'sum' с количеством раз данный параметром.for (int i = 0; i < count; i++) {
sum();
}
}
publicstaticvoid main(String[] args) {
long millis1 = System.currentTimeMillis();
doJob(10000);
long millis2 = System.currentTimeMillis();
long distance = millis2 - millis1;
System.out.println("Distance time in milli second: " + distance);
}
}
нажмите кнопку ниже, чтобы скопировать код. - от - java tutorials - команда
Результаты запуска примера:
java - джава - учиться java - учебник java -
Задание времени демо
- примеры java - java-программы
3- TimeUnit
TimeUnit это Enum, был внесен начиная с Java5. Имеет некоторые методы конвертации между единицами времени, и дествительно полезны в некоторых ситуациях.
// Число минут.
int minute = 5;
// Конвертировать минуты в милисекунды.// Это традиционный способ, который вы может использовали.
int millisecond = minute * 60 * 1000;
// Использовать TimeUnit:
long millisecond = TimeUnit.MINUTES.toMillis(minute);
нажмите кнопку ниже, чтобы скопировать код. - от - java tutorials - команда
Некоторые методы TimeUnit
// Конвертировать в наносекунды (nanoseconds).
public long toNanos(long d);
// Конвертировать в микросекунды (microseconds).
public long toMicros(long d);
// Конвертировать в милисекунды (milliseconds)
public long toMillis(long d);
// Конвертировать в секунды (seconds).
public long toSeconds(long d);
// Конвертировать в минуты (minutes).
public long toMinutes(long d);
// Конвертировать в часы (hours).
public long toHours(long d);
// Конвертировать в дни (days).
public long toDays(long d) ;
// Конвертировать в другую единицу времени, данный параметром 'u'.
public long convert(long d, TimeUnit u);
нажмите кнопку ниже, чтобы скопировать код. - от - java tutorials - команда
Пример:
TimeUnitConvertDemo.java
package org.wikitechy.tutorial.timeunit;
import java.util.concurrent.TimeUnit;
publicclass TimeUnitConvertDemo {
publicstaticvoid main(String[] args) {
// Секунды.
long second = 125553;
// Конвертировать секунды в минуты (Minute)
long minute = TimeUnit.MINUTES.convert(second, TimeUnit.SECONDS);
System.out.println("Minute " + minute);
// Конвертировать секунды выше в часы.
long hour = TimeUnit.HOURS.convert(second, TimeUnit.SECONDS);
System.out.println("Hour " + hour);
System.out.println("------");
// Конвертировать 3 дня в минуты.
minute = TimeUnit.DAYS.toMinutes(3);
System.out.println("Minute " + minute);
// Конвертировать 3 дня в часы.
hour = TimeUnit.DAYS.toHours(3);
System.out.println("Hour " + hour);
}
}
нажмите кнопку ниже, чтобы скопировать код. - от - java tutorials - команда
Результаты запуска примера:
java - джава - учиться java - учебник java -
преобразовать единицы времени
- примеры java - java-программы
4- java.util.Date
java.util.Date это один из первых классов описывающих даты в Java. К сожалению, почти все его методы устарели, вместо них используют метод java.util.Calendar. НО вы все еще можете использовать java.util.Date để для описания даты..
Только 2 конструктора (constructor) могут быть использованы:
// Создать объект Date описывающий текущее время.Date date1 = newDate();
// Создать объект Date по времени как милисекунды считая от 1-1-1970.
long millis = .....;
Date date2 = newDate(millis);
нажмите кнопку ниже, чтобы скопировать код. - от - java tutorials - команда
java - джава - учиться java - учебник java -
Дата
- примеры java - java-программы
DateDemo.java
package org.wikitechy.tutorial.date;
import java.util.Date;
import java.util.concurrent.TimeUnit;
publicclass DateDemo {
publicstaticvoid main(String[] args) throws InterruptedException {
// Создать объект Date описывающий текущее время.Date date1 = newDate();
// Остановить на примерно 3 секунды.
Thread.sleep(TimeUnit.SECONDS.toMillis(3));
// Милисекунды с 01-01-1970 до настоящего времени.
long millis = System.currentTimeMillis();
Date date2 = newDate(millis);
// Сравнить 2 объекта date1 и date2.// i < 0 значит date1 < date2// i = 0 значит date1 = date2// i > 0 значит date1 > date2
int i = date1.compareTo(date2);
System.out.println("date1 compareTo date2 = " + i);
// Проверить стоит ли date1 перед date2 или нет.boolean before = date1.before(date2);
System.out.println("date1 before date2 ? " + before);
// Проверить стоит ли date1 после date2 или нет.boolean after = date1.after(date2);
System.out.println("date1 after date2 ? " + after);
}
}
нажмите кнопку ниже, чтобы скопировать код. - от - java tutorials - команда
Результаты запуска примера:
java - джава - учиться java - учебник java -
Дата демо
- примеры java - java-программы
5- Date, Time, Timestamp (java.sql)
java.sql имеет 3 класса связанные с датой и временем:
java.sql.Date
java.sql.Time
java.sql.Timestamp
Конкретно:
java.sql.Date соответствует с SQL DATE, значит он хранит год, месяц, день и пропускает часы, минуты, секунды, милисекунды. Так же, java.sql.Date не содержит информацию про часовой пояс.
java.sql.Time соответствует с SQL TIME и содержит только информацию про часы, минуты, милисекунды.
java.sql.Timestamp соответствует с SQL TIMESTAMP, он точный до наносекунды (заметьте, java.util.Date поддерживает только до милисекунд!) с кастомизированной точностью.
Классы выше использованные в PreparedStatement в JDBC API, например методы setDate, setTime, setTimestamp. Или могут быть получены из ResultSet.
6- java.util.Calendar
Gregorian Calendar (Григорианский календарь): Это Солнечный календарь, или еще называется Христианский календарь, является мировым календарем. Он используется больше всего и назван в честь папой римским Григорием XIII, который ввел календарь в 1582 году.
Buddhist Calendar (Буддийский календарь): Это буддийский календарь, обычно используется в Юго Восточных странах, как Таиланд, Лаос, Камбоджа, и Шри Ланка. В настоящее время, этот календарь используется официально на будийских фестивалях. И нет страны, которая использует этот календарь официально, эти страны перешли на использование Григорианского календаря. Вы можете посмотреть дополнительную информацию здесь:
Japanese Imperial Calendar (Японский календарь): Это традиционный календарь Японии, в настоящее время Япония перешла на использование Григорианского календаря, при этом, традиционный календарь все еще используется неофициально.
Calendar это класс симулирующий систему Календаря.
java - джава - учиться java - учебник java -
Каландр
- примеры java - java-программы
Calendar имеет некоторые подклассы:
GregorianCalendar
JapaneseImperialCalendar
BuddhistCalendar
Calendar это абстрактный календарь. Значит вы не можете создать его из конструктора (Constructor). При этом есть 2 статистических метода создать объект Calendar.
public static Calendar getInstance();
public static Calendar getInstance(TimeZone zone);
public static Calendar getInstance(Locale aLocale);
public static Calendar getInstance(TimeZone zone,Locale aLocale);
нажмите кнопку ниже, чтобы скопировать код. - от - java tutorials - команда
Пример:
// Создать объект Calendar описывающий текущее время.// С Locale по умолчанию, и TimeZone (часовой пояс) по умолчанию// (Работающего компьютера).
Calendar c = Calendar.getInstance();
нажмите кнопку ниже, чтобы скопировать код. - от - java tutorials - команда
Когда вы используете Calendar.getInstance(TimeZone,Locale) то получаете возвратом один из вышеупомянутых классов. В большинстве возвращают GregorianCalendar.
Вызов Calendar.getInstance() возвращает объект Calendar с параметром TimeZone соотвествующим вашему компьютеру и Locale по умолчанию.
Посмотрите на код класса Calendar (JDK7):
/**
* Gets a calendar using the default time zone and locale. The
* <code>Calendar</code> returned is based on the current time
* in the default time zone with the default locale.
*
* @return a Calendar.
*/publicstatic Calendar getInstance()
{
Calendar cal = createCalendar(TimeZone.getDefaultRef(),
Locale.getDefault(Locale.Category.FORMAT));
cal.sharedZone = true;
return cal;
}
/**
* Gets a calendar using the specified time zone and default locale.
* The <code>Calendar</code> returned is based on the current time
* in the given time zone with the default locale.
*
* @param zone the time zone to use
* @return a Calendar.
*/publicstatic Calendar getInstance(TimeZone zone)
{
return createCalendar(zone, Locale.getDefault(Locale.Category.FORMAT));
}
/**
* Gets a calendar using the default time zone and specified locale.
* The <code>Calendar</code> returned is based on the current time
* in the default time zone with the given locale.
*
* @param aLocale the locale for the week data
* @return a Calendar.
*/publicstatic Calendar getInstance(Locale aLocale)
{
Calendar cal = createCalendar(TimeZone.getDefaultRef(), aLocale);
cal.sharedZone = true;
return cal;
}
/**
* Gets a calendar with the specified time zone and locale.
* The <code>Calendar</code> returned is based on the current time
* in the given time zone with the given locale.
*
* @param zone the time zone to use
* @param aLocale the locale for the week data
* @return a Calendar.
*/publicstatic Calendar getInstance(TimeZone zone,
Locale aLocale)
{
return createCalendar(zone, aLocale);
}
privatestatic Calendar createCalendar(TimeZone zone,
Locale aLocale)
{
Calendar cal = null;
String caltype = aLocale.getUnicodeLocaleType("ca");
if (caltype == null) {
// Calendar type is not specified.// If the specified locale is a Thai locale,// returns a BuddhistCalendar instance.if ("th".equals(aLocale.getLanguage())
&& ("TH".equals(aLocale.getCountry()))) {
cal = new BuddhistCalendar(zone, aLocale);
} else {
cal = new GregorianCalendar(zone, aLocale);
}
} elseif (caltype.equals("japanese")) {
cal = new JapaneseImperialCalendar(zone, aLocale);
} elseif (caltype.equals("buddhist")) {
cal = new BuddhistCalendar(zone, aLocale);
} else {
// Unsupported calendar type.// Use Gregorian calendar as a fallback.
cal = new GregorianCalendar(zone, aLocale);
}
return cal;
}
нажмите кнопку ниже, чтобы скопировать код. - от - java tutorials - команда
Некоторые важные методы:
Method get(int)
Return
get(Calendar.DAY_OF_WEEK)
1 (Calendar.SUNDAY) to 7 (Calendar.SATURDAY).
get(Calendar.YEAR)
year
get(Calendar.MONTH)
0 (Calendar.JANUARY) to 11 (Calendar.DECEMBER).
get(Calendar.DAY_OF_MONTH)
1 to 31
get(Calendar.DATE)
1 to 31
get(Calendar.HOUR_OF_DAY)
0 to 23
get(Calendar.MINUTE)
0 to 59
get(Calendar.SECOND)
0 to 59
get(Calendar.MILLISECOND)
0 to 999
get(Calendar.HOUR)
0 to 11, to be used together with Calendar.AM_PM.
get(Calendar.AM_PM)
0 (Calendar.AM) or 1 (Calendar.PM).
get(Calendar.DAY_OF_WEEK_IN_MONTH)
DAY_OF_MONTH 1 through 7 always correspond to DAY_OF_WEEK_IN_MONTH 1;
8 through 14 correspond to DAY_OF_WEEK_IN_MONTH 2, and so on.
get(Calendar.DAY_OF_YEAR)
1 to 366
get(Calendar.ZONE_OFFSET)
GMT offset value of the time zone.
get(Calendar.ERA)
Indicate AD (GregorianCalendar.AD), BC (GregorianCalendar.BC).
CalendarFieldsDemo.java
package org.wikitechy.tutorial.calendar;
import java.util.Calendar;
publicclass CalendarFieldsDemo {
publicstaticvoid main(String[] args) {
// Создть объект Calendar (календарь) по умолчанию.// С time zone (часовой пояс) и locale по умолчанию.
Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);
// Возвращает значение от 0 - 11
int month = c.get(Calendar.MONTH);
int day = c.get(Calendar.DAY_OF_MONTH);
int hour = c.get(Calendar.HOUR_OF_DAY);
int minute = c.get(Calendar.MINUTE);
int second = c.get(Calendar.SECOND);
int millis = c.get(Calendar.MILLISECOND);
System.out.println("Year: " + year);
System.out.println("Month: " + (month + 1));
System.out.println("Day: " + day);
System.out.println("Hour: " + hour);
System.out.println("Minute: " + minute);
System.out.println("Second: " + second);
System.out.println("Minute: " + minute);
System.out.println("Milli Second: " + millis);
}
}
нажмите кнопку ниже, чтобы скопировать код. - от - java tutorials - команда
CalendarFieldsDemo.java
java - джава - учиться java - учебник java -
Календарь поле демо
- примеры java - java-программы
Некоторые другие методы Calendar:
voidset(int calendarField, int value)
voidset(int year, int month, int date)
voidset(int year, int month, int date, int hour, int minute, int second)
// Добавляет или убавляет период времени на поле (field) Calendar (Календаря).// Основываясь на правилах Календаря.void add(int field, int amount)
// Сворачивает (вверх/вниз) поле (field) в Calendar.// roll(): Не влияет на другие поля Calendar.void roll(int calendarField, boolean up)
// Прокручивает вверж (Roll up) поле в Calendar.// roll(): Не влияет на другие поля Calendar.void roll(int calendarField, int amount):
// Возвращает объект Date основываясь на значение Calendar.Date getTime()
void setTime(Date date)
// Возвращает милисекунды данного объекта Calendar.
long getTimeInMills():
void setTimeInMillis(long millis)
void setTimeZone(TimeZone value)
нажмите кнопку ниже, чтобы скопировать код. - от - java tutorials - команда
CalendarDemo.java
package org.wikitechy.tutorial.calendar;
import java.util.Calendar;
publicclass CalendarDemo {
publicstaticvoid showCalendar(Calendar c) {
int year = c.get(Calendar.YEAR);
// Возвращает значение от 0 - 11
int month = c.get(Calendar.MONTH);
int day = c.get(Calendar.DAY_OF_MONTH);
int hour = c.get(Calendar.HOUR_OF_DAY);
int minute = c.get(Calendar.MINUTE);
int second = c.get(Calendar.SECOND);
int millis = c.get(Calendar.MILLISECOND);
System.out.println(" " + year + "-" + (month + 1) + "-" + day //
+ " " + hour + ":" + minute + ":" + second + " " + millis);
}
publicstaticvoid main(String[] args) {
// Создает объект Calendar, описывающий текущее время.// С time zone (часовой пояс) и locale по умолчанию.
Calendar c = Calendar.getInstance();
System.out.println("First calendar info");
showCalendar(c);
// roll(..): Сворачивает поле (field) в Calendar.// roll(..):Не меняет другие поля.// Например: Сворачивает еще один час (boolean up = true)
c.roll(Calendar.HOUR_OF_DAY, true);
System.out.println("After roll 1 hour");
showCalendar(c);
// roll(..): Не меняет другие поля Calendar.// Свернуть вниз на один час (boolean up = false)
c.roll(Calendar.HOUR_OF_DAY, false);
System.out.println("After roll -1 hour");
showCalendar(c);
// add(..): Может изменить другие поля в Calendar.// Добавить час (boolean up = true)
c.add(Calendar.HOUR_OF_DAY, 1);
System.out.println("After add 1 hour");
showCalendar(c);
// roll(..): Не меняет другие поля Calendar.// Свернуть 30 дней.
c.roll(Calendar.DAY_OF_MONTH, -30);
System.out.println("After roll -30 day");
showCalendar(c);
// add(..): Может изменить другие поля в Calendar.// Добавить 30 дней.
c.add(Calendar.DAY_OF_MONTH, 30);
System.out.println("After add 30 day");
showCalendar(c);
}
}
нажмите кнопку ниже, чтобы скопировать код. - от - java tutorials - команда
Результаты запуска примера:
java - джава - учиться java - учебник java -
kалендарь демо
- примеры java - java-программы
7- Конвертация между Date и Calendar
Date ==> Calendar
Date now = newDate();
Calendar c = Calendar.getInstance();
c.setTime(now);
нажмите кнопку ниже, чтобы скопировать код. - от - java tutorials - команда
Calendar ==> Date
Calendar c = Calendar.getInstance();
Date date = c.getTime();
нажмите кнопку ниже, чтобы скопировать код. - от - java tutorials - команда
CalendarDateConversionDemo.java
package org.wikitechy.tutorial.calendar;
import java.util.Calendar;
import java.util.Date;
import java.util.concurrent.TimeUnit;
publicclass CalendarDateConversionDemo {
publicstaticvoid showCalendar(Calendar c) {
int year = c.get(Calendar.YEAR);
// Возвращает значение от 0 - 11
int month = c.get(Calendar.MONTH);
int day = c.get(Calendar.DAY_OF_MONTH);
int hour = c.get(Calendar.HOUR_OF_DAY);
int minute = c.get(Calendar.MINUTE);
int second = c.get(Calendar.SECOND);
int millis = c.get(Calendar.MILLISECOND);
System.out.println(year + "-" + (month + 1) + "-" + day //
+ " " + hour + ":" + minute + ":" + second + " " + millis);
}
publicstaticvoid main(String[] args) {
Calendar c = Calendar.getInstance();
// year, month, day
c.set(2000, 11, 24);
Date date = c.getTime();
System.out.println("Date " + date);
long timeInMillis = System.currentTimeMillis();
// Отнять 24 часа.
timeInMillis -= TimeUnit.HOURS.toMillis(24);
Date date2 = newDate(timeInMillis);
Calendar c2 = Calendar.getInstance();
c2.setTime(date2);
showCalendar(c2);
}
}
нажмите кнопку ниже, чтобы скопировать код. - от - java tutorials - команда
пример примера javajava dateformatкак получить текущее время в javajava date сейчасjava date classформат java datetimejava time classдата-тип данных в javaпример java timeУчебник java.timejava 7 разПример java.sql.timejava date class