Глава 3
Задача 3.4 "Часовые пояса "
Компания, занимающаяся электронной коммерцией и расположенная в Лондоне, Великобритания, имеет клиентов в разных точках мира. Иногда ее сотрудникам приходится оформлять заказы по телефону. В таких случаях необходимо знать, какое время сейчас в определенном часовом поясе. Лондон работает по всеобщему времени (ВВ). Выведите таблицу со значениями времени от 0:00 до 23:00 для городов Ванкувер(-8 часов от ВВ), Нью-Иорк (-5 часов), Кейптаун (+2) и Сидней(+10). Используйте класс Time для вычисления значений времени в других часовых поясах.
Решение
Сначала инициируем переменные значениями, соответствующими 00 час 00 мин, по всеобщему времени:
Time London = new Time (00.00);
Time Vancuver = new Time (16.00);
Time NewYork = new Time (19.00);
Time CapeTown = new Time (02.00);
Time Sidney = new Time (10.00);
Time FullTime = new Time(24.00);
Затем в цикле будем добавлять время NewYork.addTime(m) по 60 минут в созданные нами объекты Time. Кроме того надо не забывать сбрасывать в нуль, содержимое объекта Time при достижении им 24 часов, чтобы начать добавлять время с нуля:
int m = 60;
Time open = new Time (0.00);
Time close = new Time (24,0);
for (Time ofDay = open; ofDay.lessThan(close); ofDay.addTime(60)) {
Time CheckTime = new Time(00.00);
London.addTime(m);
NewYork.addTime(m);
if(close.lessThan(NewYork)){
Vancuver.addTime(m);
if(close.lessThan(Vancuver)){
Код программы:
class TimeZone {
// Vancuver (-8 hour)
// NewYork (-5 hour)
// CapeTown (+ 2 hour)
// Sidney (+10 hour)
Time London = new Time (00.00);
Time Vancuver = new Time (16.00);
Time NewYork = new Time (19.00);
Time CapeTown = new Time (02.00);
Time Sidney = new Time (10.00);
Time FullTime = new Time(24.00);
TimeZone () {
System.out.print("London " + "\t\t" + "NewYork " + "\t\t" + "Vancuver " + "\t\t" +
"CapeTown " + "\t" + "Sidney " );
System.out.print("\n");
int m = 60;
Time open = new Time (0.00);
Time close = new Time (24,0);
for (Time ofDay = open; ofDay.lessThan(close); ofDay.addTime(60)) {
Time CheckTime = new Time(00.00);
London.addTime(m);
NewYork.addTime(m);
if(close.lessThan(NewYork)){
NewYork = CheckTime;
NewYork.addTime(m);
}
Vancuver.addTime(m);
if(close.lessThan(Vancuver)){
Vancuver = CheckTime;
Vancuver.addTime(m);
}
CapeTown.addTime(m);
if(close.lessThan(CapeTown)){
CapeTown = CheckTime;
CapeTown.addTime(m);
}
Sidney.addTime(m);
if(close.lessThan(Sidney)){
Sidney = CheckTime;
Sidney.addTime(m);
}
System.out.print(London + "\t\t" + NewYork + "\t\t\t" + Vancuver + "\t\t\t" +
CapeTown + "\t\t" + Sidney );
System.out.print("\n");
}
}
//-------------------
class Time {
int hour;
int min;
Time (int h, int m) {
hour = h;
min = m;
}
Time (int mins) {
hour = mins / 60;
min = mins % 60;
}
Time (double t) {
hour = (int) t;
min = (int) t*100 - hour*100;
}
Time (Time t) {
hour = t.hour;
min = t.min;
}
void addTime (int m) {
min +=m;
hour+= min / 60;
min %= 60;
}
boolean lessThan (Time t) {
return hour < t.hour | (hour==t.hour & min < t.min);
}
public String toString () {
return hour + ":" + min + " ";
}
}
//--------------------------
public static void main (String [] args) {
new TimeZone ();
}
}
Результат :
Назад |
Начало урока |
Вверх |
Вперед
Содержание