Метод set(int field,int value)
Как уже отмечалось ранее данный метод производит установку какого - либо
поля даты. На самом деле после вызова этого метода, немедленного пересчета даты
не производится. Пересчет даты будет осуществлен только после вызова методов
get(), getTime() или TimeInMillis(). Т.о. последовательная установка нескольких
полей, не вызовет не нужных вычислений. Помимо этого, появляется еще один
интересный эффект. Рассмотрим следующий пример. Предположим, что дата
установлена на последний день августа. Необходимо перевести ее на последний день
сентября. Если внутреннее представление даты изменялось бы после вызова метода
set, то при последовательной установке полей мы получили бы вот такой эффект.
public class Test {
137
public Test() {
}
public static void main(String[] args) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy MMMM
dd HH:mm:ss");
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR,2002);
cal.set(Calendar.MONTH,Calendar.AUGUST);
cal.set(Calendar.DAY_OF_MONTH,31);
"
+
System.out.println(" Initialy set date:
sdf.format(cal.getTime()));
cal.set(Calendar.MONTH,Calendar.SEPTEMBER);
System.out.println(" Date with month changed
: " +
sdf.format(cal.getTime()));
cal.set(Calendar.DAY_OF_MONTH,30);
"
+
System.out.println(" Date with day changed
:
sdf.format(cal.getTime()));
}
}
Вывод программы:
Initialy set date:
2002 August 31
22:57:47
Date with month changed : 2002 October
01 22:57:47
Date with day
changed :
2002 October 30
22:57:47
Еще пример листинга:
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateTest {
public static void main(String[] args) {
Date now = new Date();
System.out.println("toString(): " + now); //
dow mon dd hh:mm:ss zzz yyyy
// SimpleDateFormat
может
использоваться
для
управления
форматом
отображения
даты
/
времени
:
138
// E (
день
недели
): 3E or fewer (
в
текстовом
формате
xxx), >3E (
в
полном
текстовом
формате
)
// M (
месяц
): M (in number), MM (
в
числовом
виде
,
впереди
ноль
)
// 3M: (
в
текстовом
формате
xxx),
>3M: (
в
полном
текстовом
формате
)
// h (
часы
): h, hh (with leading zero)
// m (
минуты
)
// s (
секунды
)
// a (AM/PM)
// H (
часы
0
до
23)
// z (
временная
зона
)
SimpleDateFormat dateFormatter = new
SimpleDateFormat("E, y-M-d 'at' h:m:s a z");
System.out.println("Format 1: " +
dateFormatter.format(now));
dateFormatter = new SimpleDateFormat("E
yyyy.MM.dd 'at' hh:mm:ss a zzz");
System.out.println("Format 2: " +
dateFormatter.format(now));
dateFormatter = new SimpleDateFormat("EEEE, MMMM
d, yyyy");
System.out.println("Format 3: " +
dateFormatter.format(now));
Вывод программы
toString(): Sat Sep 25 21:27:01 SGT 2010
Format 1: Sat, 10-9-25 at 9:27:1 PM SGT
Format 2: Sat 2010.09.25 at 09:27:01 PM SGT
Format 3: Saturday, September 25, 2010
Вывод
Класса Date будет достаточно, если вам просто нужна простая отметка времени.
Вы можете использовать SimpleDateFormat для управления форматом отображения
даты /времени. Используйте класс java.util.Calendar, если вам нужно извлечь год,
месяц, день, час, минуту и секунду или манипулировать этими полями (например, 7
дней спустя, 3 недели назад).
Используйте java.text.DateFormat для форматирования даты (от даты до текста)
и разбора строки даты (от текста к дате). SimpleDateForamt является подклассом
139
DateFormat.
Date
является устаревшим классом, который не поддерживает
интернационализацию. Calendar и DateFormat поддерживают локалзацию (вам нужно
учитывать локализацию только в том случае, если ваша программа будет работать во
нескольких странах одновременно).
Достарыңызбен бөлісу: |