MCPcopy Create free account
hub / github.com/ReadyTalk/avian / computeDOSDateTime

Method computeDOSDateTime

classpath/java/util/zip/ZipEntry.java:140–183  ·  view source on GitHub ↗

Method computeDOSDateTime(): Takes the time from a long and converts to a Calendar object Time is stored in the MSDOS format 5 bits for hour, 6 bits for min, 5 bits for seconds Hours are in military time and must be adjusted to time zone Seconds are divided by two before storing and must be multip

(long currentTime)

Source from the content-addressed store, hash-verified

138 * @author Aaron Davis
139 **/
140 private static int computeDOSDateTime(long currentTime){
141 final int DAY_OF_MONTH = 5;
142 final int HOUR_OF_DAY = 11;
143 final int MINUTE = 12;
144 final int MONTH = 2;
145 final int SECOND = 13;
146 final int YEAR = 1;
147
148 //Create calendar object, then set time to value passed in
149 Calendar modCalendar = Calendar.getInstance();
150 modCalendar.setTime(new Date(currentTime));
151
152 //Hour
153 int timeBits = modCalendar.get(HOUR_OF_DAY);
154 timeBits = timeBits - 6;
155 timeBits = timeBits << 6;
156
157 //Minutes
158 int minBits = 0x3f & (modCalendar.get(MINUTE));;
159 timeBits = timeBits ^ minBits;
160 timeBits = timeBits << 5;
161
162 //Seconds
163 int secBits = 0x1f & (modCalendar.get(SECOND));
164 secBits = secBits >> 1; //Divide by 2
165 timeBits = timeBits ^ secBits;
166
167 //Year
168 int dateBits = (modCalendar.get(YEAR) -1980);
169 dateBits = dateBits << 4;
170
171 //Month
172 int month = 0xf & ((modCalendar.get(MONTH)) + 1);
173 dateBits = dateBits ^ month;
174 dateBits = dateBits << 5;
175
176 //Day of month
177 int dayBits = 0x1f & modCalendar.get(DAY_OF_MONTH);
178 dateBits = dateBits ^ dayBits;
179
180 //Store Date
181 int storeDate = ((dateBits << 16) ^ (timeBits));
182 return storeDate;
183 }
184
185 //Methods to set and get the uncompressed size of the entry
186 public void setSize(int size){

Callers 1

setTimeMethod · 0.95

Calls 3

getInstanceMethod · 0.95
setTimeMethod · 0.95
getMethod · 0.95

Tested by

no test coverage detected