/*
* Copyright 2015 Odnoklassniki Ltd, Mail.Ru Group
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package one.nio.http;
import java.util.GregorianCalendar;
import java.util.Locale;
import java.util.TimeZone;
public final class HttpDate extends GregorianCalendar {
private static final TimeZone GMT = TimeZone.getTimeZone("GMT");
private static final String[] DAYS = { null, "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" };
private static final String[] MONTHS = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" };
private char[] chars = "Thu, 01 Jan 1970 00:00:00 GMT".toCharArray();
public HttpDate() {
super(GMT, Locale.US);
}
public char[] toCharArray() {
return chars;
}
public String toString() {
return new String(chars);
}
public void setTime(long time) {
super.setTimeInMillis(time);
DAYS[fields[DAY_OF_WEEK]].getChars(0, 3, chars, 0);
MONTHS[fields[MONTH]].getChars(0, 3, chars, 8);
setField( 5, fields[DAY_OF_MONTH]);
setField(12, fields[YEAR] / 100);
setField(14, fields[YEAR] % 100);
setField(17, fields[HOUR_OF_DAY]);
setField(20, fields[MINUTE]);
setField(23, fields[SECOND]);
}
private void setField(int pos, int value) {
chars[pos] = (char) ('0' + value / 10);
chars[pos + 1] = (char) ('0' + value % 10);
}
}