Внутри конструктора вы можете использовать ключевое слово this
для вызова другого конструктора в том же классе. Это называется явным вызовом конструктора.
Вот еще один класс Rectangle с другой реализацией от той, что находится в разделе «Объекты».
public class Rectangle {
private int x, y;
private int width, height;
public Rectangle() {
this(1, 1);
}
public Rectangle(int width, int height) {
this( 0,0,width, height);
}
public Rectangle(int x, int y, int width, int height) {
this.x = x;
this.y = y;
this.width = width;
this.height = height;
}
}
Этот класс содержит набор конструкторов. Каждый конструктор инициализирует некоторые или все переменные-члены прямоугольника.
java.util.Date
не имеет никакого определенного часового пояса, хотя его значение обычно думается относительно UTC. Что заставляет Вас думать, что это находится в местное время?
, Чтобы быть точным: значение в java.util.Date
является количеством миллисекунд с эпохи Unix, которая произошла в полночь 1-го января 1970, UTC. Та же эпоха могла также быть описана в других часовых поясах, но традиционное описание с точки зрения UTC. Поскольку это - много миллисекунд, так как фиксированная эпоха, значение в java.util.Date
является тем же во всем мире в какой-то конкретный момент, независимо от зоны местного времени.
я подозреваю, что проблема состоит в том, что Вы отображаете его через экземпляр Календаря, который использует локальный часовой пояс или возможно использование Date.toString()
, который также использует локальный часовой пояс, или SimpleDateFormat
экземпляр, который, по умолчанию, также использует локальный часовой пояс.
, Если это не проблема, отправьте некоторый пример кода.
я, однако, рекомендовал бы использовать Joda-разовый так или иначе, который предлагает намного более ясный API.
С:
Calendar cal = Calendar.getInstance();
Тогда cal
имеют текущую дату и время.
Вы также могли получить текущую дату и Время для часового пояса с:
Calendar cal2 = Calendar.getInstance(TimeZone.getTimeZone("GMT-2"));
Вы могли спросить cal.get(Calendar.DATE);
или другой Календарь, постоянный о деталях других.
Дата и Метка времени удерживаются от использования в Java. Календарный класс это не.
Вы можете использовать:
Calendar aGMTCalendar = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
, то все операции, выполняемые с использованием объекта AGMTCalendar, будут выполнены с помощью часового пояса GMT и не будут иметь временное время сэкономления дневного света или не установленные закрепленные смещения. Я думаю, что предыдущий постер правильно, что объект DATE () всегда возвращает GMT, до тех пор, пока вы не сделаете что-то сделать с объектом даты, который он превращается в местное часовое часовое время.
Calendar c = Calendar.getInstance();
System.out.println("current: "+c.getTime());
TimeZone z = c.getTimeZone();
int offset = z.getRawOffset();
if(z.inDaylightTime(new Date())){
offset = offset + z.getDSTSavings();
}
int offsetHrs = offset / 1000 / 60 / 60;
int offsetMins = offset / 1000 / 60 % 60;
System.out.println("offset: " + offsetHrs);
System.out.println("offset: " + offsetMins);
c.add(Calendar.HOUR_OF_DAY, (-offsetHrs));
c.add(Calendar.MINUTE, (-offsetMins));
System.out.println("GMT Time: "+c.getTime());
SimpleDateFormat dateFormatGmt = new SimpleDateFormat("yyyy-MMM-dd HH:mm:ss");
dateFormatGmt.setTimeZone(TimeZone.getTimeZone("GMT"));
//Local time zone
SimpleDateFormat dateFormatLocal = new SimpleDateFormat("yyyy-MMM-dd HH:mm:ss");
//Time in GMT
return dateFormatLocal.parse( dateFormatGmt.format(new Date()) );
Календарь aGMTCalendar = Calendar.getInstance (TimeZone.getTimeZone ("GMT")); Тогда все операции, выполняемые с помощью объекта aGMTCalendar, будут выполняться с часовым поясом GMT и не будут иметь летнего времени или применены фиксированные смещения
Неправильно!
Calendar aGMTCalendar = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
aGMTCalendar.getTime(); //or getTimeInMillis()
и
Calendar aNotGMTCalendar = Calendar.getInstance(TimeZone.getTimeZone("GMT-2"));aNotGMTCalendar.getTime();
вернутся одновременно. То же для
new Date(); //it's not GMT.