Latest web development tutorials

Java Дата Время

Дата пакет java.util предоставляет классы для инкапсуляции текущую дату и время. Дата класс предоставляет два конструктора для создания экземпляра объекта Date.

Первый конструктор использует текущую дату и время для инициализации объекта.

Date( )

Второй конструктор принимает параметр, который является количество миллисекунд, прошедших с 1 января 1970 года.

Date(long millisec)

После того как объект Date создан, вы можете вызвать следующий метод.

Нет. Метод и Описание
1 булева после (дата Date)
Если этот метод вызывается, когда объект Date после указанной даты возвращает истину, в противном случае она возвращает ложь.
2 булева ранее (дата Дата)
Если этот метод вызывается, когда объект Date до указанной даты возвращает истину, в противном случае она возвращает ложь.
3 Клон Object ()
Возвращает копию этого объекта.
4 INT СотрагеТо (дата Дата)
Сравните этот метод вызывается, когда объект Date к указанной дате. Возвращает 0, если они равны. Вызов объекта до указанной даты возвращает отрицательное число. Вызов объекта после указанной даты возвращается положительное число.
5 INT СотрагеТо (объект Object)
Если OBJ является дата тип, операция эквивалентна CompareTo (Date). В противном случае, он бросает ClassCastException.
6 булевы Equals (Object) Дата
При вызове этого метода и объекта Date равен указанной даты, когда возвращает истину, в противном случае возвращает ложь.
7 долго GetTime ()
Она возвращает количество миллисекунд, прошедших с 1 января 1970 00:00:00 GMT в лице этого объекта Date.
8 INT хэш - код ()
Возвращает значение хэш-кода для этого объекта.
9 недействительным SetTime (долгое время)

Я 1 января 1970 00:00:00 GMT миллисекунды позднее время, чтобы установить время и дату.
10 Строка ToString ()
Преобразование даты представления объекта String, и возвращает строку.

Получить текущую дату и время

Java получает текущую дату и время очень проста, используйте метод ToString объекта Date (), чтобы напечатать текущую дату и время следующим образом:

import java.util.Date;
  
public class DateDemo {
   public static void main(String args[]) {
       // 初始化 Date 对象
       Date date = new Date();
        
       // 使用 toString() 函数显示日期时间
       System.out.println(date.toString());
   }
}

Приведенные выше примеры скомпилированные получены следующие результаты:

Mon May 04 09:51:52 CDT 2013

Сравнить даты

Java использует три метода для сравнения двух следующих дат:

  • Используйте метод GetTime (), чтобы получить две даты (1 января 1970 года через число миллисекунд, прошедших с), а затем сравнить два значения.
  • Использовать до (), после того, как () и Equals (). Например, за месяц до 12, чем 18, новый Дата (99, 2, 12) .Перед (новые Дата (99, 2, 18)) возвращает истину.
  • Метод использования СотрагеТо (), который определяется Сопоставимые интерфейс, дата класс реализует этот интерфейс.

Использование SimpleDateFormat для форматирования даты

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

import java.util.*;
import java.text.*;

public class DateDemo {
   public static void main(String args[]) {

      Date dNow = new Date( );
      SimpleDateFormat ft = 
      new SimpleDateFormat ("E yyyy.MM.dd 'at' hh:mm:ss a zzz");

      System.out.println("Current Date: " + ft.format(dNow));
   }
}

Приведенные выше примеры скомпилированные получены следующие результаты:

Current Date: Sun 2004.07.18 at 04:14:09 PM PDT

Формат кодирования Простой DateFormat

Строка шаблона Время используется для задания формата времени. В этом режиме все ASCII буквы зарезервированы, как определены буквы образца следующим образом:

письмо описание пример
G знак Эра нашей эры
Y Четыре года 2001
M месяц Июль или 07
d дата месяц 10
час AM / PM формат (1 ~ 12) часов 12
H Час дня (от 0 до 23) 22
м Количество минут 30
s секунд 55
S миллисекунды 234
Е День недели вторник
D День года 360
F Первые недели месяца недели 2 (второй ср в июле)
вес Первые несколько недель в году 40
W Первые недели месяца 1
AM / PM метка PM
К Час дня (от 1 до 24) 24
К AM / PM формат (0 ~ 11) часов 10
Z Временная зона Восточное стандартное время
' ограничитель текста Ограничитель
" Одинарные кавычки `

форматирования даты использования PRINTF

Метод Printf может быть легко форматируется время и дату. Используйте формат двух букв, она начинается с т и в следующей таблице в конце письма. Например:

import java.util.Date;

public class DateDemo {

  public static void main(String args[]) {
     // 初始化 Date 对象
     Date date = new Date();

     // 使用toString()显示日期和时间
     String str = String.format("Current Date/Time : %tc", date );

     System.out.printf(str);
  }
}

Приведенные выше примеры скомпилированные получены следующие результаты:

Current Date/Time : Sat Dec 15 16:37:57 MST 2012

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

Индекс должен немедленно% позади, и должно заканчиваться $. Например:

import java.util.Date;
  
public class DateDemo {

   public static void main(String args[]) {
       // 初始化 Date 对象
       Date date = new Date();
        
       // 使用toString()显示日期和时间
       System.out.printf("%1$s %2$tB %2$td, %2$tY", 
                         "Due date:", date);
   }
}

Приведенные выше примеры скомпилированные получены следующие результаты:

Due date: February 09, 2004

Кроме того, вы можете использовать <флаг. Он показывает, ранее отформатирован параметры, которые будут использоваться снова. Например:

import java.util.Date;
  
public class DateDemo {

   public static void main(String args[]) {
       // 初始化 Date 对象
       Date date = new Date();
        
       // 显示格式化时间
       System.out.printf("%s %tB %<te, %<tY", 
                         "Due date:", date);
   }
}

Приведенные выше примеры скомпилированные получены следующие результаты:

Due date: February 09, 2004

Символы преобразования даты и времени

характер описание пример
с Полный Дата и время Пн 4 май 2009 9:51:52 CDT
F ISO 8601 формат даты 2004-02-09
D формат даты США (месяц / день / год) 02/09/2004
T Время 24 часа 18:05:19
R 12-часовой рабочий день 6:05:19 вечера
R 24-часовое время, не включает в себя секунды 18:05
Y 4 года (с ведущим нулем) 2004
Y После двух лет (с ведущим нулем) 04
С 2 года назад (с ведущим нулем) 20
В Полное название месяца февраль
б месяц Сокращение февраль
N 2 месяца (с ведущим нулем) 02
d 2 дня (с ведущим нулем) 03
е 2 дня (без начального 0) 9
Неделя полное имя понедельник
Короткая неделя понедельник
J 3-х лет (с ведущим нулем) 069
H 2 часа (с ведущим нулем), 00-23 18
К 2 часа (без начального 0), 0-23 18
Я 2 часа (с ведущим нулем), 01-12 06
L 2 часа (без начального 0), 1-12 6
M 2 минуты (с ведущим нулем) 05
S 2 секунды (с ведущим нулем) 19
L 3 мс (с ведущим нулем) 047
N 9 нс (с ведущим нулем) 047000000
P Капитализируются днем ​​флага PM
р Во второй половине дня в нижнем регистре логотипа вечера
Z Смещение от GMT в RFC 822 Digital -0800
Z Временная зона PST
s Количество секунд, прошедших с 1970-01-01 00:00:00 GMT 1078884319
Q Так как 1970-01-01 00:00:00 GMT центов замечательно 1078884319047

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


Разбор строки в то время,

SimpleDateFormat класс имеет некоторые дополнительные методы, особенно разобрать выражение (), которые пытались следовать заданной SimpleDateFormat формат хранения объекта для разбора строки. Например:

import java.util.*;
import java.text.*;
  
public class DateDemo {

   public static void main(String args[]) {
      SimpleDateFormat ft = new SimpleDateFormat ("yyyy-MM-dd"); 

      String input = args.length == 0 ? "1818-11-11" : args[0]; 

      System.out.print(input + " Parses as "); 

      Date t; 

      try { 
          t = ft.parse(input); 
          System.out.println(t); 
      } catch (ParseException e) { 
          System.out.println("Unparseable using " + ft); 
      }
   }
}

Приведенные выше примеры скомпилированные получены следующие результаты:

$ java DateDemo
1818-11-11 Parses as Wed Nov 11 00:00:00 GMT 1818
$ java DateDemo 2007-12-01
2007-12-01 Parses as Sat Dec 01 00:00:00 GMT 2007

Java в состоянии покоя (сна)

сон () делает текущий поток в застойном состоянии (блокирует текущий поток), так что использование процессора, цель состоит в том, чтобы сохранить текущий поток в одиночку занимают ресурсы процессора, полученные в процессе, чтобы оставить некоторое время, чтобы случайно еще один поток выполнения.

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

import java.util.*;
  
public class SleepDemo {
   public static void main(String args[]) {
      try { 
         System.out.println(new Date( ) + "\n"); 
         Thread.sleep(1000*3);   // 休眠3秒
         System.out.println(new Date( ) + "\n"); 
      } catch (Exception e) { 
          System.out.println("Got an exception!"); 
      }
   }
}

Приведенные выше примеры скомпилированные получены следующие результаты:

Thu Sep 17 10:20:30 CST 2015

Thu Sep 17 10:20:33 CST 2015

время измерения

Вот пример, который показывает вам, как измерять интервалы времени (в миллисекундах):

import java.util.*;
  
public class DiffDemo {

   public static void main(String args[]) {
      try {
         long start = System.currentTimeMillis( );
         System.out.println(new Date( ) + "\n");
         Thread.sleep(5*60*10);
         System.out.println(new Date( ) + "\n");
         long end = System.currentTimeMillis( );
         long diff = end - start;
         System.out.println("Difference is : " + diff);
      } catch (Exception e) {
         System.out.println("Got an exception!");
      }
   }
}

Приведенные выше примеры скомпилированные получены следующие результаты:

Fri Jan 08 09:48:47 CST 2016

Fri Jan 08 09:48:50 CST 2016

Difference is : 3019

Класс Календарь

Теперь мы можем отформатировать и создать объект даты, но как мы можем установить и получить определенную часть его современные данные, такие как часы, дни или минуты? Как мы можем в этих частях даты плюс или минус ? ответ заключается в использовании категории Календарь.

Многие мощные функции, чем класс календарной даты класса, но и в реализации, чем дата класса комплекса.

Класс Calendar это абстрактный класс, который реализует конкретный подкласс объектов в реальных условиях эксплуатации, создание объектов является прозрачным для программиста нужно только быть создан, чтобы использовать метод GetInstance.

Создайте объект Calendar, представляющий текущую системную дату

Calendar c = Calendar.getInstance();//默认是当前日期

Создание указанного объекта календаря даты

Используйте класс календарь представляет определенное время, вам нужно сначала создать объект календаря, а затем устанавливает параметры даты объекта для завершения.

//创建一个代表2009年6月12日的Calendar对象
Calendar c1 = Calendar.getInstance();
c1.set(2009, 6 - 1, 12);

Календарь тип поля объекта класса

Тип календаря используется в этих констант представляют разные значения, многие думали, что этот класс фактически используются в JDK

постоянная описание
Calendar.YEAR лет
Calendar.MONTH месяц
Calendar.DATE дата
Calendar.DAY_OF_MONTH Дата и идентично выше полей значения
Calendar.HOUR 12-часовой формат
Calendar.HOUR_OF_DAY 24-часовой формат
Calendar.MINUTE минут
Calendar.SECOND второй
Calendar.DAY_OF_WEEK День недели

Установка информационного объекта класса Календарь

Набор настроек

Такие, как:

Calendar c1 = Calendar.getInstance();

Звоните по телефону:

public final void set(int year,int month,int date)
c1.set(2009, 6 - 1, 12);//把Calendar对象c1的年月日分别设这为:2009、6、12

Используйте настройки типа поля

Если задать только поле, такие как дата значение можно установить с помощью следующих методов:

public void set(int field,int value)

Объект Date представляет c1 установлен на 10, все остальные значения пересчитываются

c1.set(Calendar.DATE,10);

Объект представляет собой год c1 установлен в 2008 году, все остальные значения пересчитываются

c1.set(Calendar.YEAR,2008);

Значение других свойств поля устанавливается так

Добавление настроек

Calendar c1 = Calendar.getInstance();

Целевой датой плюс 10 c1, c1 также выражается как через 10 дней после даты, все остальные значения пересчитываются

c1.add(Calendar.DATE, 10);

Целевая дата минус 10 с1, с1 также выражается как дата 10 дней назад, все остальные значения будут пересчитаны

<pre>c1.add(Calendar.DATE, -10);

добавить это означает другие свойства поля так

Объект класса Calendar, чтобы получить информацию

Calendar c1 = Calendar.getInstance();
// 获得年份
int year = c1.get(Calendar.YEAR);
// 获得月份
int month = c1.get(Calendar.MONTH) + 1;
// 获得日期
int date = c1.get(Calendar.DATE);
// 获得小时
int hour = c1.get(Calendar.HOUR_OF_DAY);
// 获得分钟
int minute = c1.get(Calendar.MINUTE);
// 获得秒
int second = c1.get(Calendar.SECOND);
// 获得星期几(注意(这个与Date类是不同的):1代表星期日、2代表星期1、3代表星期二,以此类推)
int day = c1.get(Calendar.DAY_OF_WEEK);

класс GregorianCalendar

Класс Calendar реализует григорианский календарь, класс GregorianCalendar Календарь является конкретной реализацией.

Календарь GetInstance () метод возвращает значение по умолчанию с текущей локали и временной зоны инициализации объекта GregorianCalendar. GregorianCalendar определяет два поля: AD и BC. Они представляют собой два календаря определили эру.

Ниже перечислены некоторые из них объект GregorianCalendar конструктор:

Нет . Конструктор и Описание
1 GregorianCalendar ()
Если у вас есть локаль по умолчанию часовой пояс по умолчанию Создаёт GregorianCalendar тока по умолчанию.
2 GregorianCalendar (INT год, Int месяц, дата INT)
Если у вас есть зона по умолчанию языковой стандарт по умолчанию Создаёт GregorianCalendar с заданным набором дат
3 GregorianCalendar (INT год, Int месяц, дата INT, INT час, минута INT)
Наличие языкового стандарта по умолчанию по умолчанию часовой пояс для GregorianCalendar конструирует определенную дату и время настройки.
4 GregorianCalendar (INT год, Int месяц, дата INT, INT час, Int минуту, Int второй)
Наличие языкового стандарта по умолчанию по умолчанию часовой пояс для GregorianCalendar конструирует определенную дату и время настройки.
5 GregorianCalendar (Locale aLocale)
Когда вы должны установить область языковой стандарт по умолчанию Создаёт на основе GregorianCalendar текущего времени.
6 GregorianCalendar (TimeZone зона)
В локали по умолчанию с учетом часового пояса по построить GregorianCalendar на основе текущего времени.
7 GregorianCalendar (TimeZone зона, Locale aLocale)
В данной местности данного часового пояса Создаёт GregorianCalendar на основе текущего времени.

Вот список класса GregorianCalendar предоставляет некоторые полезные методы:

Нет . Метод и Описание
1 недействительными добавить (целое поле, Int сумма )
В соответствии с правилами, указанными календаря (подпись) количество времени данного календарного поля.
2 защищенные недействительными computeFields ()
UTC пороговое значение времени преобразования мс
3 защищенный пустота computeTime ()
Покрытие календарь, Конвертирует значение поля времени в формате UTC в миллисекундах
4 булевы равно (OBJ Object)
Сравнивает этот GregorianCalendar указанному объекту.
5 INT получить (целое поле)
Получает значение времени указанного поля
6 INT getActualMaximum (целое поле)
Возвращает текущую дату, максимальное значение данного поля
7 INT getActualMinimum (целое поле)
Возвращает текущую дату, минимальное значение данного поля
8 INT getGreatestMinimum (целое поле)
GregorianCalendar Возвращает максимальное минимальное значение для данного календарного поля.
9 Дата getGregorianChange ()
Получить григорианский дату изменения.
10 INT getLeastMaximum (целое поле)
Возвращает этот экземпляр GregorianCalendar данного календарного поля наименьшая максимальное значение
11 INT getMaximum (целое поле)
Возвращает экземпляр GregorianCalendar заданный максимальный календарь поле.
12 Дата GetTime ()
Получить текущее время календаря.
13 длинные getTimeInMillis ()
Получить календарь с длинное целое представление текущего времени
14 TimeZone getTimeZone ()
Получить часовой пояс.
15 INT getMinimum (целое поле)
Назад к минимальному значению заданного поля.
16 INT хэш - код ()
Перепишите хэш-код.
17 булево ISLEAPYEAR (INT год)
Определяет, является ли данный год является високосным.
18 недействительным рулон (целое поле, булево вверх )
На данный момент времени поле, чтобы добавить или вычесть одну единицу времени (вверх / вниз), не меняя больших полей.
19 недействительными набор (INT поля, значение INT )
С помощью данного поля значения времени.
20 недействительными набор (INT год, Int месяц , дата INT)
Установите год, значение месяца и дня.
21 недействительными набор (INT год, Int месяц , дата INT, INT час, минута INT)
Установите год, месяц, день, час, минута значение.
22 недействительными набор (INT год, Int месяц , дата INT, INT час, Int минуту, Int второй)
Установить год, часы, минуты и секунды значения месяца, дня.
23 setGregorianChange недействительным (дата дата)
Устанавливает GregorianCalendar дату изменения.
24 недействительным SetTime (дата дата)
С текущего времени данная дата, установленная календаря.
25 setTimeInMillis недействительным (длинный Миллис)
При заданном числе длинного типа текущего времени миллисекунды календаря.
26 недействительным setTimeZone (значение TimeZone)
С помощью настроек часового пояса в текущем часовом поясе.
27 Строка ToString ()
Возвращает строку, которая представляет календарь.

примеров

import java.util.*;
  
public class GregorianCalendarDemo {

   public static void main(String args[]) {
      String months[] = {
      "Jan", "Feb", "Mar", "Apr",
      "May", "Jun", "Jul", "Aug",
      "Sep", "Oct", "Nov", "Dec"};
      
      int year;
      // 初始化 Gregorian 日历
      // 使用当前时间和日期
      // 默认为本地时间和时区
      GregorianCalendar gcalendar = new GregorianCalendar();
      // 显示当前时间和日期的信息
      System.out.print("Date: ");
      System.out.print(months[gcalendar.get(Calendar.MONTH)]);
      System.out.print(" " + gcalendar.get(Calendar.DATE) + " ");
      System.out.println(year = gcalendar.get(Calendar.YEAR));
      System.out.print("Time: ");
      System.out.print(gcalendar.get(Calendar.HOUR) + ":");
      System.out.print(gcalendar.get(Calendar.MINUTE) + ":");
      System.out.println(gcalendar.get(Calendar.SECOND));
      
      // 测试当前年份是否为闰年
      if(gcalendar.isLeapYear(year)) {
         System.out.println("当前年份是闰年");
      }
      else {
         System.out.println("当前年份不是闰年");
      }
   }
}

Приведенные выше примеры скомпилированные получены следующие результаты:

Date: Apr 22 2009
Time: 11:25:27
当前年份不是闰年